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

Commit 035f80d7 authored by Nick Kralevich's avatar Nick Kralevich
Browse files

Add buildPermissionRequestIntent to PackageManager

Add the buildPermissionRequestIntent API to PackageManager. This allows
an app to request an Intent which, when passed to
startActivityForResult, will prompt the user to approve permissions
for an app.

Currently, the API is @hide.  It will be unhidden in a future change.

Change-Id: I4ec677002afa799a6eb5c2657c28452c91012436
parent 4b254881
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -1263,6 +1263,23 @@ public abstract class PackageManager {
    public static final String EXTRA_VERIFICATION_VERSION_CODE
            = "android.content.pm.extra.VERIFICATION_VERSION_CODE";

    /**
     * The action used to request that the user approve a permission request
     * from the application.
     *
     * @hide
     */
    public static final String ACTION_REQUEST_PERMISSION
            = "android.content.pm.action.REQUEST_PERMISSION";

    /**
     * Extra field name for the list of permissions, which the user must approve.
     *
     * @hide
     */
    public static final String EXTRA_REQUEST_PERMISSION_PERMISSION_LIST
            = "android.content.pm.extra.PERMISSION_LIST";

    /**
     * Retrieve overall information about an application package that is
     * installed on the system.
@@ -1734,6 +1751,30 @@ public abstract class PackageManager {
     */
    public abstract void removePermission(String name);

    /**
     * Returns an {@link Intent} suitable for passing to {@code startActivityForResult}
     * which prompts the user to grant {@code permissions} to this application.
     * @hide
     *
     * @throws NullPointerException if {@code permissions} is {@code null}.
     * @throws IllegalArgumentException if {@code permissions} contains {@code null}.
     */
    public Intent buildPermissionRequestIntent(String... permissions) {
        if (permissions == null) {
            throw new NullPointerException("permissions cannot be null");
        }
        for (String permission : permissions) {
            if (permission == null) {
                throw new IllegalArgumentException("permissions cannot contain null");
            }
        }

        Intent i = new Intent(ACTION_REQUEST_PERMISSION);
        i.putExtra(EXTRA_REQUEST_PERMISSION_PERMISSION_LIST, permissions);
        i.setPackage("com.android.packageinstaller");
        return i;
    }

    /**
     * Grant a permission to an application which the application does not
     * already have.  The permission must have been requested by the application,