diff options
| -rw-r--r-- | services/core/java/com/android/server/accounts/AccountManagerService.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 85abf87b4b2e..130a7333959d 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -3152,6 +3152,7 @@ public class AccountManagerService new AccountAuthenticatorResponse(this), authTokenType, true); + mCanStartAccountManagerActivity = true; Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); onResult(bundle); @@ -4933,6 +4934,7 @@ public class AccountManagerService IAccountAuthenticator mAuthenticator = null; private final boolean mStripAuthTokenFromResult; + protected boolean mCanStartAccountManagerActivity = false; protected final UserAccounts mAccounts; public Session(UserAccounts accounts, IAccountManagerResponse response, String accountType, @@ -5068,9 +5070,13 @@ public class AccountManagerService private boolean isExportedSystemActivity(ActivityInfo activityInfo) { String className = activityInfo.name; - return "android".equals(activityInfo.packageName) && - (GrantCredentialsPermissionActivity.class.getName().equals(className) - || CantAddAccountActivity.class.getName().equals(className)); + if (!"android".equals(activityInfo.packageName)) { + return false; + + } + return (mCanStartAccountManagerActivity + && GrantCredentialsPermissionActivity.class.getName().equals(className)) + || CantAddAccountActivity.class.getName().equals(className); } private void close() { |