diff options
| author | 2018-09-06 14:10:22 +0000 | |
|---|---|---|
| committer | 2018-09-06 14:10:22 +0000 | |
| commit | b19f26e78f080d0cb7e9ca460ae59e486bf0fb83 (patch) | |
| tree | 98a7c7e5b5914ceff14e73264d14155c44d754dd | |
| parent | 3b37d4d803165e249d92672547d5133b074b0862 (diff) | |
| parent | a5b4df2a8937fed8cb07fa5b63252d013c808fe7 (diff) | |
Merge "Move ApplicationInfo.usesNonSdkApi to private flags"
3 files changed, 24 insertions, 14 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 1108f938ed4f..225b6cfd9a8f 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -615,6 +615,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public static final int PRIVATE_FLAG_PRODUCT = 1 << 19; /** + * Value for {@link #privateFlags}: whether this app is signed with the + * platform key. + * @hide + */ + public static final int PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY = 1 << 20; + + /** * Value for {@link #privateFlags}: whether this app is pre-installed on the * google partition of the system image. * @hide @@ -622,11 +629,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public static final int PRIVATE_FLAG_PRODUCT_SERVICES = 1 << 21; /** - * Value for {@link #privateFlags}: whether this app is signed with the - * platform key. + * Indicates whether this package requires access to non-SDK APIs. + * Only system apps and tests are allowed to use this property. * @hide */ - public static final int PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY = 1 << 20; + public static final int PRIVATE_FLAG_USES_NON_SDK_API = 1 << 22; /** @hide */ @IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = { @@ -1009,13 +1016,6 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public String appComponentFactory; /** - * Indicates whether this package requires access to non-SDK APIs. Only system apps - * and tests are allowed to use this property. - * @hide - */ - public boolean usesNonSdkApi; - - /** * The category of this app. Categories are used to cluster multiple apps * together into meaningful groups, such as when summarizing battery, * network, or disk usage. Apps should only define this value when they fit @@ -1294,6 +1294,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { pw.println(prefix + "category=" + category); } pw.println(prefix + "HiddenApiEnforcementPolicy=" + getHiddenApiEnforcementPolicy()); + pw.println(prefix + "usesNonSdkApi=" + usesNonSdkApi()); } super.dumpBack(pw, prefix); } @@ -1718,11 +1719,18 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return SystemConfig.getInstance().getHiddenApiWhitelistedApps().contains(packageName); } + /** + * @hide + */ + public boolean usesNonSdkApi() { + return (privateFlags & PRIVATE_FLAG_USES_NON_SDK_API) != 0; + } + private boolean isAllowedToUseHiddenApis() { if (isSignedWithPlatformKey()) { return true; } else if (isSystemApp() || isUpdatedSystemApp()) { - return usesNonSdkApi || isPackageWhitelistedForHiddenApis(); + return usesNonSdkApi() || isPackageWhitelistedForHiddenApis(); } else { return false; } diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 8b058dccbb6e..6d493627785f 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -3659,8 +3659,10 @@ public class PackageParser { ai.appComponentFactory = buildClassName(ai.packageName, factory, outError); } - ai.usesNonSdkApi = sa.getBoolean( - com.android.internal.R.styleable.AndroidManifestApplication_usesNonSdkApi, false); + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_usesNonSdkApi, false)) { + ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API; + } if (outError[0] == null) { CharSequence pname; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b91a449aab89..e6ff0d8a677a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17061,7 +17061,7 @@ public class ActivityManagerService extends IActivityManager.Stub activeInstr.mUiAutomationConnection = uiAutomationConnection; activeInstr.mResultClass = className; - boolean disableHiddenApiChecks = ai.usesNonSdkApi + boolean disableHiddenApiChecks = ai.usesNonSdkApi() || (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; if (disableHiddenApiChecks) { enforceCallingPermission(android.Manifest.permission.DISABLE_HIDDEN_API_CHECKS, |