Finish Activity when account is changed

Fixes: 146230862
Test: remove work profile account
Change-Id: I7c7c788587d9f17b629358be56befa76b0916e99
This commit is contained in:
Raff Tsai
2019-12-16 12:30:05 +08:00
parent 8e25a3a658
commit 5c075bad44

View File

@@ -90,7 +90,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private Preference mProfileNotAvailablePreference;
private String[] mAuthorities;
private int mAuthoritiesCount = 0;
private SettingsPreferenceFragment mParent;
private SettingsPreferenceFragment mFragment;
private int mAccountProfileOrder = ORDER_ACCOUNT_PROFILES;
private AccountRestrictionHelper mHelper;
private MetricsFeatureProvider mMetricsFeatureProvider;
@@ -146,7 +146,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
super(context);
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
mAuthorities = authorities;
mParent = parent;
mFragment = parent;
if (mAuthorities != null) {
mAuthoritiesCount = mAuthorities.length;
}
@@ -238,7 +238,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
}
if (preference == profileData.removeWorkProfilePreference) {
final int userId = profileData.userInfo.id;
RemoveUserFragment.newInstance(userId).show(mParent.getFragmentManager(),
RemoveUserFragment.newInstance(userId).show(mFragment.getFragmentManager(),
"removeUser");
return true;
}
@@ -246,7 +246,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
Bundle arguments = new Bundle();
arguments.putParcelable(Intent.EXTRA_USER, profileData.userInfo.getUserHandle());
new SubSettingLauncher(mContext)
.setSourceMetricsCategory(mParent.getMetricsCategory())
.setSourceMetricsCategory(mFragment.getMetricsCategory())
.setDestination(ManagedProfileSettings.class.getName())
.setTitleRes(R.string.managed_profile_settings_title)
.setArguments(arguments)
@@ -297,7 +297,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
}
private void updateProfileUi(final UserInfo userInfo) {
if (mParent.getPreferenceManager() == null) {
if (mFragment.getPreferenceManager() == null) {
return;
}
final ProfileData data = mProfiles.get(userInfo.id);
@@ -316,7 +316,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
profileData.userInfo = userInfo;
AccessiblePreferenceCategory preferenceGroup =
mHelper.createAccessiblePreferenceCategory(
mParent.getPreferenceManager().getContext());
mFragment.getPreferenceManager().getContext());
preferenceGroup.setOrder(mAccountProfileOrder++);
if (isSingleProfile()) {
preferenceGroup.setTitle(context.getString(R.string.account_for_section_header,
@@ -342,7 +342,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
mContext.getString(R.string.accessibility_category_personal));
}
}
final PreferenceScreen screen = mParent.getPreferenceScreen();
final PreferenceScreen screen = mFragment.getPreferenceScreen();
if (screen != null) {
screen.addPreference(preferenceGroup);
}
@@ -359,7 +359,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private RestrictedPreference newAddAccountPreference() {
RestrictedPreference preference =
new RestrictedPreference(mParent.getPreferenceManager().getContext());
new RestrictedPreference(mFragment.getPreferenceManager().getContext());
preference.setTitle(R.string.add_account_label);
preference.setIcon(R.drawable.ic_add_24dp);
preference.setOnPreferenceClickListener(this);
@@ -369,7 +369,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private RestrictedPreference newRemoveWorkProfilePreference() {
RestrictedPreference preference = new RestrictedPreference(
mParent.getPreferenceManager().getContext());
mFragment.getPreferenceManager().getContext());
preference.setKey(PREF_KEY_REMOVE_PROFILE);
preference.setTitle(R.string.remove_managed_profile_label);
preference.setIcon(R.drawable.ic_delete);
@@ -380,7 +380,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private Preference newManagedProfileSettings() {
Preference preference = new Preference(mParent.getPreferenceManager().getContext());
Preference preference = new Preference(mFragment.getPreferenceManager().getContext());
preference.setKey(PREF_KEY_WORK_PROFILE_SETTING);
preference.setTitle(R.string.managed_profile_settings_title);
preference.setIcon(R.drawable.ic_settings_24dp);
@@ -400,7 +400,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
}
void cleanUpPreferences() {
PreferenceScreen screen = mParent.getPreferenceScreen();
PreferenceScreen screen = mFragment.getPreferenceScreen();
if (screen == null) {
return;
}
@@ -435,7 +435,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
}
private void updateAccountTypes(ProfileData profileData) {
if (mParent.getPreferenceManager() == null
if (mFragment.getPreferenceManager() == null
|| profileData.preferenceGroup.getPreferenceManager() == null) {
// This could happen if activity is finishing
return;
@@ -469,7 +469,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
// Put a label instead of the accounts list
if (mProfileNotAvailablePreference == null) {
mProfileNotAvailablePreference =
new Preference(mParent.getPreferenceManager().getContext());
new Preference(mFragment.getPreferenceManager().getContext());
}
mProfileNotAvailablePreference.setEnabled(false);
mProfileNotAvailablePreference.setIcon(R.drawable.empty_icon);
@@ -508,7 +508,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
final Account[] accounts = AccountManager.get(mContext)
.getAccountsByTypeAsUser(accountType, userHandle);
final Drawable icon = helper.getDrawableForType(mContext, accountType);
final Context prefContext = mParent.getPreferenceManager().getContext();
final Context prefContext = mFragment.getPreferenceManager().getContext();
// Add a preference row for each individual account
for (Account account : accounts) {
@@ -536,7 +536,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
titleResId);
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent),
prefContext, mMetricsFeatureProvider.getMetricsCategory(mFragment),
account, titleResPackageName, titleResId, label,
AccountDetailDashboardFragment.class.getName(), fragmentArguments, icon));
}
@@ -587,11 +587,15 @@ public class AccountPreferenceController extends AbstractPreferenceController
Log.v(TAG, "Received broadcast: " + action);
if (action.equals(Intent.ACTION_MANAGED_PROFILE_REMOVED)
|| action.equals(Intent.ACTION_MANAGED_PROFILE_ADDED)) {
// Clean old state
stopListeningToAccountUpdates();
// Build new state
updateUi();
listenToAccountUpdates();
if (mFragment instanceof AccountWorkProfileDashboardFragment) {
mFragment.getActivity().finish();
} else {
// Clean old state
stopListeningToAccountUpdates();
// Build new state
updateUi();
listenToAccountUpdates();
}
return;
}
Log.w(TAG, "Cannot handle received broadcast: " + intent.getAction());