Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3fb373d6 authored by David Brazdil's avatar David Brazdil Committed by android-build-merger
Browse files

Merge "Add android:usesNonSdkApi manifest attribute" am: 9446fbbe

am: a872cb1f

Change-Id: I489673fe1b36c146b9b64f3da434b853e002a472
parents e9a54af0 a872cb1f
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -1000,6 +1000,13 @@ 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,
@@ -1704,8 +1711,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
    }

    private boolean isAllowedToUseHiddenApis() {
        return isSignedWithPlatformKey()
            || (isPackageWhitelistedForHiddenApis() && (isSystemApp() || isUpdatedSystemApp()));
        if (isSignedWithPlatformKey()) {
            return true;
        } else if (isSystemApp() || isUpdatedSystemApp()) {
            return usesNonSdkApi || isPackageWhitelistedForHiddenApis();
        } else {
            return false;
        }
    }

    /**
+3 −0
Original line number Diff line number Diff line
@@ -3588,6 +3588,9 @@ public class PackageParser {
            ai.appComponentFactory = buildClassName(ai.packageName, factory, outError);
        }

        ai.usesNonSdkApi = sa.getBoolean(
                com.android.internal.R.styleable.AndroidManifestApplication_usesNonSdkApi, false);

        if (outError[0] == null) {
            CharSequence pname;
            if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) {
+5 −0
Original line number Diff line number Diff line
@@ -1385,6 +1385,8 @@
         instantiates items without it.-->
    <attr name="appComponentFactory" format="string" />

    <attr name="usesNonSdkApi" format="boolean" />

    <!-- The <code>manifest</code> tag is the root of an
         <code>AndroidManifest.xml</code> file,
         describing the contents of an Android package (.apk) file.  One
@@ -1558,6 +1560,9 @@

        <attr name="appComponentFactory" />

        <!-- Declares that this application should be invoked without non-SDK API enforcement -->
        <attr name="usesNonSdkApi" />

    </declare-styleable>
    <!-- The <code>permission</code> tag declares a security permission that can be
         used to control access from other packages to specific components or
+5 −0
Original line number Diff line number Diff line
@@ -2905,6 +2905,11 @@
    <public-group type="attr" first-id="0x01010587">
    </public-group>

    <public-group type="attr" first-id="0x0101058d">
        <!-- @hide For use by platform and tools only. Developers should not specify this value. -->
        <public name="usesNonSdkApi" />
    </public-group>

    <public-group type="style" first-id="0x010302e2">
    </public-group>

+2 −2
Original line number Diff line number Diff line
@@ -22020,8 +22020,8 @@ public class ActivityManagerService extends IActivityManager.Stub
            activeInstr.mUiAutomationConnection = uiAutomationConnection;
            activeInstr.mResultClass = className;
            boolean disableHiddenApiChecks =
                    (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0;
            boolean disableHiddenApiChecks = ai.usesNonSdkApi
                    || (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0;
            if (disableHiddenApiChecks) {
                enforceCallingPermission(android.Manifest.permission.DISABLE_HIDDEN_API_CHECKS,
                        "disable hidden API checks");