X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/088b1e83a46c97bc2d9f37654892a2d8a29bc029..5dc43aab3cc1243f9989dd6a0c7dd3350c3f709b:/src/com/owncloud/android/AccountUtils.java diff --git a/src/com/owncloud/android/AccountUtils.java b/src/com/owncloud/android/AccountUtils.java index 06ab31a9..7297ee10 100644 --- a/src/com/owncloud/android/AccountUtils.java +++ b/src/com/owncloud/android/AccountUtils.java @@ -1,10 +1,10 @@ /* ownCloud Android client application * Copyright (C) 2012 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,7 +18,7 @@ package com.owncloud.android; -import com.owncloud.android.authenticator.AccountAuthenticator; +import com.owncloud.android.authentication.AccountAuthenticator; import com.owncloud.android.utils.OwnCloudVersion; import android.accounts.Account; @@ -37,12 +37,13 @@ public class AccountUtils { public static final String STATUS_PATH = "/status.php"; /** - * Can be used to get the currently selected ownCloud account in the - * preferences + * Can be used to get the currently selected ownCloud {@link Account} in the + * application preferences. * - * @param context The current appContext - * @return The current account or first available, if none is available, - * then null. + * @param context The current application {@link Context} + * @return The ownCloud {@link Account} currently saved in preferences, or the first + * {@link Account} available, if valid (still registered in the system as ownCloud + * account). If none is available and valid, returns null. */ public static Account getCurrentOwnCloudAccount(Context context) { Account[] ocAccounts = AccountManager.get(context).getAccountsByType( @@ -54,6 +55,7 @@ public class AccountUtils { String accountName = appPreferences .getString("select_oc_account", null); + // account validation: the saved account MUST be in the list of ownCloud Accounts known by the AccountManager if (accountName != null) { for (Account account : ocAccounts) { if (account.name.equals(accountName)) { @@ -61,8 +63,10 @@ public class AccountUtils { break; } } - } else if (ocAccounts.length != 0) { - // we at least need to take first account as fallback + } + + if (defaultAccount == null && ocAccounts.length != 0) { + // take first account as fallback defaultAccount = ocAccounts[0]; } @@ -84,11 +88,26 @@ public class AccountUtils { } - public static void setCurrentOwnCloudAccount(Context context, String name) { - SharedPreferences.Editor appPrefs = PreferenceManager - .getDefaultSharedPreferences(context).edit(); - appPrefs.putString("select_oc_account", name); - appPrefs.commit(); + public static boolean setCurrentOwnCloudAccount(Context context, String accountName) { + boolean result = false; + if (accountName != null) { + Account[] ocAccounts = AccountManager.get(context).getAccountsByType( + AccountAuthenticator.ACCOUNT_TYPE); + boolean found = false; + for (Account account : ocAccounts) { + found = (account.name.equals(accountName)); + if (found) { + SharedPreferences.Editor appPrefs = PreferenceManager + .getDefaultSharedPreferences(context).edit(); + appPrefs.putString("select_oc_account", accountName); + + appPrefs.commit(); + result = true; + break; + } + } + } + return result; } /**