diff --git a/api/current.txt b/api/current.txt index ed83772142e65..3158f58f6e38a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3035,8 +3035,8 @@ package android.accounts { field public static final java.lang.String KEY_PASSWORD = "password"; field public static final java.lang.String KEY_USERDATA = "userdata"; field public static final deprecated java.lang.String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android.accounts.key_legacy_not_visible"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android.accounts.key_legacy_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible"; field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3 field public static final int VISIBILITY_UNDEFINED = 0; // 0x0 field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4 diff --git a/api/system-current.txt b/api/system-current.txt index 5ddb64135885d..84ebfa4eaa578 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3164,8 +3164,8 @@ package android.accounts { field public static final java.lang.String KEY_PASSWORD = "password"; field public static final java.lang.String KEY_USERDATA = "userdata"; field public static final deprecated java.lang.String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android.accounts.key_legacy_not_visible"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android.accounts.key_legacy_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible"; field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3 field public static final int VISIBILITY_UNDEFINED = 0; // 0x0 field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4 diff --git a/api/test-current.txt b/api/test-current.txt index 9439e3872e87d..9f09598e9f8a1 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -3035,8 +3035,8 @@ package android.accounts { field public static final java.lang.String KEY_PASSWORD = "password"; field public static final java.lang.String KEY_USERDATA = "userdata"; field public static final deprecated java.lang.String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android.accounts.key_legacy_not_visible"; - field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android.accounts.key_legacy_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible"; + field public static final java.lang.String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible"; field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3 field public static final int VISIBILITY_UNDEFINED = 0; // 0x0 field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4 diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 06b09c041f1fa..a5b37f391c16e 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -376,7 +376,7 @@ public class AccountManager { * {@link #VISIBILITY_USER_MANAGED_NOT_VISIBLE} is used. */ public static final String PACKAGE_NAME_KEY_LEGACY_VISIBLE = - "android.accounts.key_legacy_visible"; + "android:accounts:key_legacy_visible"; /** * Key to set visibility for applications which satisfy one of the following conditions: @@ -395,7 +395,7 @@ public class AccountManager { * {@link #VISIBILITY_USER_MANAGED_VISIBLE} is used. */ public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = - "android.accounts.key_legacy_not_visible"; + "android:accounts:key_legacy_not_visible"; /** * @hide diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 018e41b7bef13..03da5b21fef8b 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -576,6 +576,22 @@ public class AccountManagerService long identityToken = clearCallingIdentity(); try { UserAccounts accounts = getUserAccounts(userId); + if (AccountManager.PACKAGE_NAME_KEY_LEGACY_VISIBLE.equals(packageName)) { + int visibility = getAccountVisibilityFromCache(account, packageName, accounts); + if (AccountManager.VISIBILITY_UNDEFINED != visibility) { + return visibility; + } else { + return AccountManager.VISIBILITY_USER_MANAGED_VISIBLE; + } + } + if (AccountManager.PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE.equals(packageName)) { + int visibility = getAccountVisibilityFromCache(account, packageName, accounts); + if (AccountManager.VISIBILITY_UNDEFINED != visibility) { + return visibility; + } else { + return AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE; + } + } return resolveAccountVisibility(account, packageName, accounts); } finally { restoreCallingIdentity(identityToken); @@ -641,11 +657,6 @@ public class AccountManagerService return AccountManager.VISIBILITY_VISIBLE; // Authenticator can always see the account } - if (isSpecialPackageKey(packageName)) { - Log.d(TAG, "Package name is forbidden: " + packageName); - return AccountManager.VISIBILITY_NOT_VISIBLE; - } - // Return stored value if it was set. int visibility = getAccountVisibilityFromCache(account, packageName, accounts);