Loading api/test-current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -700,6 +700,7 @@ package android.content.pm { } public abstract class PackageManager { method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener); method public abstract boolean arePermissionsIndividuallyControlled(); method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int); method @Nullable public String getIncidentReportApproverPackageName(); Loading @@ -713,6 +714,7 @@ package android.content.pm { method @NonNull public abstract String getSharedSystemSharedLibraryPackageName(); method @Nullable public String getWellbeingPackageName(); method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener); method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS"}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, int, int, @NonNull android.os.UserHandle); field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage"; Loading @@ -735,6 +737,10 @@ package android.content.pm { field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared"; } public static interface PackageManager.OnPermissionsChangedListener { method public void onPermissionsChanged(int); } public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { field public static final int FLAG_REMOVED = 2; // 0x2 field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000 Loading core/java/android/content/pm/PackageManager.java +3 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi public interface OnPermissionsChangedListener { /** Loading Loading @@ -6413,6 +6414,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS) public abstract void addOnPermissionsChangeListener( @NonNull OnPermissionsChangedListener listener); Loading @@ -6425,6 +6427,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS) public abstract void removeOnPermissionsChangeListener( @NonNull OnPermissionsChangedListener listener); Loading data/etc/privapp-permissions-platform.xml +2 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,8 @@ applications that come with the platform <permission name="android.permission.INSTALL_PACKAGES"/> <!-- Needed for test only --> <permission name="android.permission.INTERACT_ACROSS_PROFILES"/> <!-- Permission required to test onPermissionsChangedListener --> <permission name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS"/> <permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.LOCAL_MAC_ADDRESS"/> <permission name="android.permission.MANAGE_ACCESSIBILITY"/> Loading packages/Shell/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ <uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" /> <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" /> <uses-permission android:name="android.permission.WHITELIST_RESTRICTED_PERMISSIONS" /> <!-- Permission required to test onPermissionsChangedListener --> <uses-permission android:name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" /> <uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" /> <uses-permission android:name="android.permission.GET_DETAILED_TASKS" /> <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" /> Loading services/core/java/com/android/server/pm/PackageManagerService.java +24 −4 Original line number Diff line number Diff line Loading @@ -1768,11 +1768,12 @@ public class PackageManagerService extends IPackageManager.Stub private PermissionCallback mPermissionCallback = new PermissionCallback() { @Override public void onGidsChanged(int appId, int userId) { public void onGidsChanged(int appId, @UserIdInt int userId) { mHandler.post(() -> killUid(appId, userId, KILL_APP_REASON_GIDS_CHANGED)); } @Override public void onPermissionGranted(int uid, int userId) { public void onPermissionGranted(int uid, @UserIdInt int userId) { mOnPermissionChangeListeners.onPermissionsChanged(uid); // Not critical; if this is lost, the application has to request again. Loading @@ -1780,14 +1781,16 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.writeRuntimePermissionsForUserLPr(userId, false); } } @Override public void onInstallPermissionGranted() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onPermissionRevoked(int uid, int userId) { public void onPermissionRevoked(int uid, @UserIdInt int userId) { mOnPermissionChangeListeners.onPermissionsChanged(uid); synchronized (mPackages) { Loading @@ -1798,26 +1801,43 @@ public class PackageManagerService extends IPackageManager.Stub final int appId = UserHandle.getAppId(uid); killUid(appId, userId, KILL_APP_REASON_PERMISSIONS_REVOKED); } @Override public void onInstallPermissionRevoked() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onPermissionUpdated(int[] updatedUserIds, boolean sync) { public void onPermissionUpdated(@UserIdInt int[] updatedUserIds, boolean sync) { synchronized (mPackages) { for (int userId : updatedUserIds) { mSettings.writeRuntimePermissionsForUserLPr(userId, sync); } } } @Override public void onPermissionUpdatedNotifyListener(@UserIdInt int[] updatedUserIds, boolean sync, int uid) { onPermissionUpdated(updatedUserIds, sync); mOnPermissionChangeListeners.onPermissionsChanged(uid); } @Override public void onInstallPermissionUpdated() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onInstallPermissionUpdatedNotifyListener(int uid) { onInstallPermissionUpdated(); mOnPermissionChangeListeners.onPermissionsChanged(uid); } @Override public void onPermissionRemoved() { synchronized (mPackages) { Loading
api/test-current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -700,6 +700,7 @@ package android.content.pm { } public abstract class PackageManager { method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener); method public abstract boolean arePermissionsIndividuallyControlled(); method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int); method @Nullable public String getIncidentReportApproverPackageName(); Loading @@ -713,6 +714,7 @@ package android.content.pm { method @NonNull public abstract String getSharedSystemSharedLibraryPackageName(); method @Nullable public String getWellbeingPackageName(); method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener); method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS"}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, int, int, @NonNull android.os.UserHandle); field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage"; Loading @@ -735,6 +737,10 @@ package android.content.pm { field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared"; } public static interface PackageManager.OnPermissionsChangedListener { method public void onPermissionsChanged(int); } public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { field public static final int FLAG_REMOVED = 2; // 0x2 field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000 Loading
core/java/android/content/pm/PackageManager.java +3 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi public interface OnPermissionsChangedListener { /** Loading Loading @@ -6413,6 +6414,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS) public abstract void addOnPermissionsChangeListener( @NonNull OnPermissionsChangedListener listener); Loading @@ -6425,6 +6427,7 @@ public abstract class PackageManager { * @hide */ @SystemApi @TestApi @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS) public abstract void removeOnPermissionsChangeListener( @NonNull OnPermissionsChangedListener listener); Loading
data/etc/privapp-permissions-platform.xml +2 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,8 @@ applications that come with the platform <permission name="android.permission.INSTALL_PACKAGES"/> <!-- Needed for test only --> <permission name="android.permission.INTERACT_ACROSS_PROFILES"/> <!-- Permission required to test onPermissionsChangedListener --> <permission name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS"/> <permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.LOCAL_MAC_ADDRESS"/> <permission name="android.permission.MANAGE_ACCESSIBILITY"/> Loading
packages/Shell/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ <uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" /> <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" /> <uses-permission android:name="android.permission.WHITELIST_RESTRICTED_PERMISSIONS" /> <!-- Permission required to test onPermissionsChangedListener --> <uses-permission android:name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" /> <uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" /> <uses-permission android:name="android.permission.GET_DETAILED_TASKS" /> <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" /> Loading
services/core/java/com/android/server/pm/PackageManagerService.java +24 −4 Original line number Diff line number Diff line Loading @@ -1768,11 +1768,12 @@ public class PackageManagerService extends IPackageManager.Stub private PermissionCallback mPermissionCallback = new PermissionCallback() { @Override public void onGidsChanged(int appId, int userId) { public void onGidsChanged(int appId, @UserIdInt int userId) { mHandler.post(() -> killUid(appId, userId, KILL_APP_REASON_GIDS_CHANGED)); } @Override public void onPermissionGranted(int uid, int userId) { public void onPermissionGranted(int uid, @UserIdInt int userId) { mOnPermissionChangeListeners.onPermissionsChanged(uid); // Not critical; if this is lost, the application has to request again. Loading @@ -1780,14 +1781,16 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.writeRuntimePermissionsForUserLPr(userId, false); } } @Override public void onInstallPermissionGranted() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onPermissionRevoked(int uid, int userId) { public void onPermissionRevoked(int uid, @UserIdInt int userId) { mOnPermissionChangeListeners.onPermissionsChanged(uid); synchronized (mPackages) { Loading @@ -1798,26 +1801,43 @@ public class PackageManagerService extends IPackageManager.Stub final int appId = UserHandle.getAppId(uid); killUid(appId, userId, KILL_APP_REASON_PERMISSIONS_REVOKED); } @Override public void onInstallPermissionRevoked() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onPermissionUpdated(int[] updatedUserIds, boolean sync) { public void onPermissionUpdated(@UserIdInt int[] updatedUserIds, boolean sync) { synchronized (mPackages) { for (int userId : updatedUserIds) { mSettings.writeRuntimePermissionsForUserLPr(userId, sync); } } } @Override public void onPermissionUpdatedNotifyListener(@UserIdInt int[] updatedUserIds, boolean sync, int uid) { onPermissionUpdated(updatedUserIds, sync); mOnPermissionChangeListeners.onPermissionsChanged(uid); } @Override public void onInstallPermissionUpdated() { synchronized (mPackages) { scheduleWriteSettingsLocked(); } } @Override public void onInstallPermissionUpdatedNotifyListener(int uid) { onInstallPermissionUpdated(); mOnPermissionChangeListeners.onPermissionsChanged(uid); } @Override public void onPermissionRemoved() { synchronized (mPackages) {