summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accounts/AccountSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/accounts/AccountSettings.java')
-rw-r--r--src/com/android/settings/accounts/AccountSettings.java22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index e60bed9..13878d7 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -16,14 +16,13 @@
package com.android.settings.accounts;
+
import android.accounts.Account;
import android.accounts.AccountManager;
-import android.accounts.OnAccountsUpdateListener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
@@ -39,13 +38,17 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
+import static android.content.Intent.EXTRA_USER;
+
/**
* Settings screen for the account types on the device.
* This shows all account types available for personal and work profiles.
+ *
+ * An extra {@link UserHandle} can be specified in the intent as {@link EXTRA_USER}, if the user for
+ * which the action needs to be performed is different to the one the Settings App will run in.
*/
public class AccountSettings extends SettingsPreferenceFragment
implements AuthenticatorHelper.OnAccountsUpdateListener,
@@ -146,7 +149,7 @@ public class AccountSettings extends SettingsPreferenceFragment
}
final ProfileData profileData = new ProfileData();
profileData.preferenceGroup = (PreferenceGroup) findPreference(categoryKey);
- if (mUm.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+ if (mUm.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, userHandle)) {
removePreference(addAccountKey);
} else {
profileData.addAccountPreference = findPreference(addAccountKey);
@@ -189,7 +192,7 @@ public class AccountSettings extends SettingsPreferenceFragment
private void updateAccountTypes(ProfileData profileData) {
profileData.preferenceGroup.removeAll();
final ArrayList<AccountPreference> preferences = getAccountTypePreferences(
- profileData.authenticatorHelper);
+ profileData.authenticatorHelper, profileData.userHandle);
final int count = preferences.size();
for (int i = 0; i < count; i++) {
profileData.preferenceGroup.addPreference(preferences.get(i));
@@ -199,7 +202,8 @@ public class AccountSettings extends SettingsPreferenceFragment
}
}
- private ArrayList<AccountPreference> getAccountTypePreferences(AuthenticatorHelper helper) {
+ private ArrayList<AccountPreference> getAccountTypePreferences(AuthenticatorHelper helper,
+ UserHandle userHandle) {
final String[] accountTypes = helper.getEnabledAccountTypes();
final ArrayList<AccountPreference> accountTypePreferences =
new ArrayList<AccountPreference>(accountTypes.length);
@@ -212,7 +216,7 @@ public class AccountSettings extends SettingsPreferenceFragment
}
final Account[] accounts = AccountManager.get(getActivity())
- .getAccountsByType(accountType);
+ .getAccountsByTypeAsUser(accountType, userHandle);
final boolean skipToAccount = accounts.length == 1
&& !helper.hasAccountPreferences(accountType);
@@ -220,6 +224,7 @@ public class AccountSettings extends SettingsPreferenceFragment
final Bundle fragmentArguments = new Bundle();
fragmentArguments.putParcelable(AccountSyncSettings.ACCOUNT_KEY,
accounts[0]);
+ fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountPreference(getActivity(), label,
AccountSyncSettings.class.getName(), fragmentArguments,
@@ -229,6 +234,7 @@ public class AccountSettings extends SettingsPreferenceFragment
fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
label.toString());
+ fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountPreference(getActivity(), label,
ManageAccountsSettings.class.getName(), fragmentArguments,
@@ -254,7 +260,7 @@ public class AccountSettings extends SettingsPreferenceFragment
ProfileData profileData = mProfiles.valueAt(i);
if (preference == profileData.addAccountPreference) {
Intent intent = new Intent(ADD_ACCOUNT_ACTION);
- intent.putExtra(Intent.EXTRA_USER_HANDLE, profileData.userHandle);
+ intent.putExtra(EXTRA_USER, profileData.userHandle);
startActivity(intent);
return true;
}