summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2018-09-07 03:12:59 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-09-07 03:12:59 -0700
commitde5cc1ff5b27aef9f5de2789d09fbd883c742099 (patch)
tree85b384d3a3861281024ea8d8b1f4e24b48917a22 /core/java
parent5c776dea7ebc68e31b16019093a191ef015ada97 (diff)
parentfdd378c594c68f2bd2226315dc2838b58ed2131f (diff)
Merge "Move ApplicationInfo.usesNonSdkApi to private flags"
am: fdd378c594 Change-Id: I43fe6b903eb4cd900da9ebc2b10893213329c691
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/pm/ApplicationInfo.java24
-rw-r--r--core/java/android/content/pm/PackageParser.java6
2 files changed, 20 insertions, 10 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 76d06c089a70..d818228cb2b6 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -621,6 +621,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
*/
public static final int PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY = 1 << 20;
+ /**
+ * 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_USES_NON_SDK_API = 1 << 22;
+
/** @hide */
@IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = {
PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE,
@@ -1001,13 +1008,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
@@ -1286,6 +1286,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);
}
@@ -1710,11 +1711,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 54cfc8044e91..2921e297e160 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -3588,8 +3588,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;