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

Commit 78a0333f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add a system API to make a package become visible to other package" into tm-dev

parents a56e6c1f 829792d7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -102,6 +102,7 @@ package android.content.pm {
  public abstract class PackageManager {
  public abstract class PackageManager {
    method @NonNull public String getPermissionControllerPackageName();
    method @NonNull public String getPermissionControllerPackageName();
    method @NonNull public String getSdkSandboxPackageName();
    method @NonNull public String getSdkSandboxPackageName();
    method @RequiresPermission("android.permission.MAKE_UID_VISIBLE") public void makeUidVisible(int, int);
    field public static final String EXTRA_VERIFICATION_ROOT_HASH = "android.content.pm.extra.VERIFICATION_ROOT_HASH";
    field public static final String EXTRA_VERIFICATION_ROOT_HASH = "android.content.pm.extra.VERIFICATION_ROOT_HASH";
    field public static final int MATCH_STATIC_SHARED_AND_SDK_LIBRARIES = 67108864; // 0x4000000
    field public static final int MATCH_STATIC_SHARED_AND_SDK_LIBRARIES = 67108864; // 0x4000000
  }
  }
+2 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package android {
    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
    field public static final String INSTALL_TEST_ONLY_PACKAGE = "android.permission.INSTALL_TEST_ONLY_PACKAGE";
    field public static final String INSTALL_TEST_ONLY_PACKAGE = "android.permission.INSTALL_TEST_ONLY_PACKAGE";
    field public static final String KEEP_UNINSTALLED_PACKAGES = "android.permission.KEEP_UNINSTALLED_PACKAGES";
    field public static final String KEEP_UNINSTALLED_PACKAGES = "android.permission.KEEP_UNINSTALLED_PACKAGES";
    field public static final String MAKE_UID_VISIBLE = "android.permission.MAKE_UID_VISIBLE";
    field @Deprecated public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
    field @Deprecated public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
    field public static final String MANAGE_ACTIVITY_TASKS = "android.permission.MANAGE_ACTIVITY_TASKS";
    field public static final String MANAGE_ACTIVITY_TASKS = "android.permission.MANAGE_ACTIVITY_TASKS";
    field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES";
    field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES";
@@ -836,6 +837,7 @@ package android.content.pm {
    method @Nullable public String getSystemTextClassifierPackageName();
    method @Nullable public String getSystemTextClassifierPackageName();
    method @Nullable public String getWellbeingPackageName();
    method @Nullable public String getWellbeingPackageName();
    method public void holdLock(android.os.IBinder, int);
    method public void holdLock(android.os.IBinder, int);
    method @RequiresPermission(android.Manifest.permission.MAKE_UID_VISIBLE) public void makeUidVisible(int, int);
    method @RequiresPermission(android.Manifest.permission.KEEP_UNINSTALLED_PACKAGES) public void setKeepUninstalledPackages(@NonNull java.util.List<java.lang.String>);
    method @RequiresPermission(android.Manifest.permission.KEEP_UNINSTALLED_PACKAGES) public void setKeepUninstalledPackages(@NonNull java.util.List<java.lang.String>);
    field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
    field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
    field public static final String FEATURE_COMMUNAL_MODE = "android.software.communal_mode";
    field public static final String FEATURE_COMMUNAL_MODE = "android.software.communal_mode";
+9 −0
Original line number Original line Diff line number Diff line
@@ -3832,4 +3832,13 @@ public class ApplicationPackageManager extends PackageManager {
            throw re.rethrowAsRuntimeException();
            throw re.rethrowAsRuntimeException();
        }
        }
    }
    }

    @Override
    public void makeUidVisible(int recipientUid, int visibleUid) {
        try {
            mPM.makeUidVisible(recipientUid, visibleUid);
        } catch (RemoteException e) {
            throw e.rethrowAsRuntimeException();
        }
    }
}
}
+5 −1
Original line number Original line Diff line number Diff line
@@ -781,7 +781,11 @@ interface IPackageManager {


    boolean isAutoRevokeWhitelisted(String packageName);
    boolean isAutoRevokeWhitelisted(String packageName);


    void grantImplicitAccess(int queryingUid, String visibleAuthority);
    void makeProviderVisible(int recipientAppId, String visibleAuthority);

    @JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest"
            + ".permission.MAKE_UID_VISIBLE)")
    void makeUidVisible(int recipientAppId, int visibleUid);


    IBinder getHoldLockToken();
    IBinder getHoldLockToken();


+22 −3
Original line number Original line Diff line number Diff line
@@ -10281,19 +10281,38 @@ public abstract class PackageManager {
    }
    }


    /**
    /**
     * Grants implicit visibility of the package that provides an authority to a querying UID.
     * Makes a package that provides an authority {@code visibleAuthority} become visible to the
     * application {@code recipientUid}.
     *
     *
     * @throws SecurityException when called by a package other than the contacts provider
     * @throws SecurityException when called by a package other than the contacts provider
     * @hide
     * @hide
     */
     */
    public void grantImplicitAccess(int queryingUid, String visibleAuthority) {
    public void makeProviderVisible(int recipientUid, String visibleAuthority) {
        try {
        try {
            ActivityThread.getPackageManager().grantImplicitAccess(queryingUid, visibleAuthority);
            ActivityThread.getPackageManager().makeProviderVisible(recipientUid, visibleAuthority);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
        }
        }
    }
    }


    /**
     * Makes the package associated with the uid {@code visibleUid} become visible to the
     * recipient uid application.
     *
     * @param recipientUid The uid of the application that is being given access to {@code
     *                     visibleUid}
     * @param visibleUid The uid of the application that is becoming accessible to {@code
     *                   recipientAppId}
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MAKE_UID_VISIBLE)
    @TestApi
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    public void makeUidVisible(int recipientUid, int visibleUid) {
        throw new UnsupportedOperationException(
                "makeUidVisible not implemented in subclass");
    }

    // Some of the flags don't affect the query result, but let's be conservative and cache
    // Some of the flags don't affect the query result, but let's be conservative and cache
    // each combination of flags separately.
    // each combination of flags separately.


Loading