Loading core/java/android/app/ApplicationPackageManager.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -110,6 +110,9 @@ final class ApplicationPackageManager extends PackageManager { @GuardedBy("mDelegates") @GuardedBy("mDelegates") private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); @GuardedBy("mLock") private String mPermissionsControllerPackageName; UserManager getUserManager() { UserManager getUserManager() { synchronized (mLock) { synchronized (mLock) { if (mUserManager == null) { if (mUserManager == null) { Loading Loading @@ -429,6 +432,23 @@ final class ApplicationPackageManager extends PackageManager { } } } } /** * @hide */ @Override public String getPermissionControllerPackageName() { synchronized (mLock) { if (mPermissionsControllerPackageName == null) { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); } catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); } } return mPermissionsControllerPackageName; } } @Override @Override public boolean addPermission(PermissionInfo info) { public boolean addPermission(PermissionInfo info) { try { try { Loading core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -505,4 +505,6 @@ interface IPackageManager { void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); String getPermissionControllerPackageName(); } } core/java/android/content/pm/PackageManager.java +12 −10 Original line number Original line Diff line number Diff line Loading @@ -1875,14 +1875,6 @@ public abstract class PackageManager { public static final String ACTION_REQUEST_PERMISSIONS = public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS"; "android.content.pm.action.REQUEST_PERMISSIONS"; /** * The component name handling runtime permission grants. * * @hide */ public static final String GRANT_PERMISSIONS_PACKAGE_NAME = "com.android.packageinstaller"; /** /** * The names of the requested permissions. * The names of the requested permissions. * <p> * <p> Loading Loading @@ -2431,7 +2423,17 @@ public abstract class PackageManager { * @return Whether the permission is restricted by policy. * @return Whether the permission is restricted by policy. */ */ @CheckResult @CheckResult public abstract boolean isPermissionRevokedByPolicy(String permName, String pkgName); public abstract boolean isPermissionRevokedByPolicy(@NonNull String permName, @NonNull String pkgName); /** * Gets the package name of the component controlling runtime permissions. * * @return The package name. * * @hide */ public abstract String getPermissionControllerPackageName(); /** /** * Add a new dynamic permission to the system. For this to work, your * Add a new dynamic permission to the system. For this to work, your Loading Loading @@ -2615,7 +2617,7 @@ public abstract class PackageManager { } } Intent intent = new Intent(ACTION_REQUEST_PERMISSIONS); Intent intent = new Intent(ACTION_REQUEST_PERMISSIONS); intent.putExtra(EXTRA_REQUEST_PERMISSIONS_NAMES, permissions); intent.putExtra(EXTRA_REQUEST_PERMISSIONS_NAMES, permissions); intent.setPackage(GRANT_PERMISSIONS_PACKAGE_NAME); intent.setPackage(getPermissionControllerPackageName()); return intent; return intent; } } Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -489,7 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // User needs to accept permissions; give installer an intent they // User needs to accept permissions; give installer an intent they // can use to involve user. // can use to involve user. final Intent intent = new Intent(PackageInstaller.ACTION_CONFIRM_PERMISSIONS); final Intent intent = new Intent(PackageInstaller.ACTION_CONFIRM_PERMISSIONS); intent.setPackage("com.android.packageinstaller"); intent.setPackage(mContext.getPackageManager().getPermissionControllerPackageName()); intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId); intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId); try { try { mRemoteObserver.onUserActionRequired(intent); mRemoteObserver.onUserActionRequired(intent); Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -3193,6 +3193,13 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public String getPermissionControllerPackageName() { synchronized (mPackages) { return mRequiredInstallerPackage; } } /** /** * Checks if the request is from the system or an app that has INTERACT_ACROSS_USERS * Checks if the request is from the system or an app that has INTERACT_ACROSS_USERS * or INTERACT_ACROSS_USERS_FULL permissions, if the userid is not for the caller. * or INTERACT_ACROSS_USERS_FULL permissions, if the userid is not for the caller. Loading Loading
core/java/android/app/ApplicationPackageManager.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -110,6 +110,9 @@ final class ApplicationPackageManager extends PackageManager { @GuardedBy("mDelegates") @GuardedBy("mDelegates") private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); @GuardedBy("mLock") private String mPermissionsControllerPackageName; UserManager getUserManager() { UserManager getUserManager() { synchronized (mLock) { synchronized (mLock) { if (mUserManager == null) { if (mUserManager == null) { Loading Loading @@ -429,6 +432,23 @@ final class ApplicationPackageManager extends PackageManager { } } } } /** * @hide */ @Override public String getPermissionControllerPackageName() { synchronized (mLock) { if (mPermissionsControllerPackageName == null) { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); } catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); } } return mPermissionsControllerPackageName; } } @Override @Override public boolean addPermission(PermissionInfo info) { public boolean addPermission(PermissionInfo info) { try { try { Loading
core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -505,4 +505,6 @@ interface IPackageManager { void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); String getPermissionControllerPackageName(); } }
core/java/android/content/pm/PackageManager.java +12 −10 Original line number Original line Diff line number Diff line Loading @@ -1875,14 +1875,6 @@ public abstract class PackageManager { public static final String ACTION_REQUEST_PERMISSIONS = public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS"; "android.content.pm.action.REQUEST_PERMISSIONS"; /** * The component name handling runtime permission grants. * * @hide */ public static final String GRANT_PERMISSIONS_PACKAGE_NAME = "com.android.packageinstaller"; /** /** * The names of the requested permissions. * The names of the requested permissions. * <p> * <p> Loading Loading @@ -2431,7 +2423,17 @@ public abstract class PackageManager { * @return Whether the permission is restricted by policy. * @return Whether the permission is restricted by policy. */ */ @CheckResult @CheckResult public abstract boolean isPermissionRevokedByPolicy(String permName, String pkgName); public abstract boolean isPermissionRevokedByPolicy(@NonNull String permName, @NonNull String pkgName); /** * Gets the package name of the component controlling runtime permissions. * * @return The package name. * * @hide */ public abstract String getPermissionControllerPackageName(); /** /** * Add a new dynamic permission to the system. For this to work, your * Add a new dynamic permission to the system. For this to work, your Loading Loading @@ -2615,7 +2617,7 @@ public abstract class PackageManager { } } Intent intent = new Intent(ACTION_REQUEST_PERMISSIONS); Intent intent = new Intent(ACTION_REQUEST_PERMISSIONS); intent.putExtra(EXTRA_REQUEST_PERMISSIONS_NAMES, permissions); intent.putExtra(EXTRA_REQUEST_PERMISSIONS_NAMES, permissions); intent.setPackage(GRANT_PERMISSIONS_PACKAGE_NAME); intent.setPackage(getPermissionControllerPackageName()); return intent; return intent; } } Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -489,7 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // User needs to accept permissions; give installer an intent they // User needs to accept permissions; give installer an intent they // can use to involve user. // can use to involve user. final Intent intent = new Intent(PackageInstaller.ACTION_CONFIRM_PERMISSIONS); final Intent intent = new Intent(PackageInstaller.ACTION_CONFIRM_PERMISSIONS); intent.setPackage("com.android.packageinstaller"); intent.setPackage(mContext.getPackageManager().getPermissionControllerPackageName()); intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId); intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId); try { try { mRemoteObserver.onUserActionRequired(intent); mRemoteObserver.onUserActionRequired(intent); Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -3193,6 +3193,13 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public String getPermissionControllerPackageName() { synchronized (mPackages) { return mRequiredInstallerPackage; } } /** /** * Checks if the request is from the system or an app that has INTERACT_ACROSS_USERS * Checks if the request is from the system or an app that has INTERACT_ACROSS_USERS * or INTERACT_ACROSS_USERS_FULL permissions, if the userid is not for the caller. * or INTERACT_ACROSS_USERS_FULL permissions, if the userid is not for the caller. Loading