diff options
| author | 2023-12-27 16:27:41 -0800 | |
|---|---|---|
| committer | 2023-12-28 13:20:19 -0800 | |
| commit | fa25c428909b488cf23a1bfa49e5b8cf204598f2 (patch) | |
| tree | 5cea127ff56c4344366e3b833073ae91e117ba34 | |
| parent | 31b1d0408d919f52ea5e101bda892e339fa82894 (diff) | |
Update AccountManagerService checkKeyIntent.
GrantCredentialsPermissionActivity can be opened from system app.
This change makes sure that Intent used launch it was created by AMS
The activity is used by authenticators with customTokens=false
Test: manual
Bug: 314961491
Change-Id: Idcfa6e6e264f64f59b066b436303815549e30bef
| -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() { |