Merge "Get permissions flags with GET_RUNTIME_PERMISSION"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8af0210f0e
@@ -1620,7 +1620,7 @@ package android.content.pm {
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
|
||||
method public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(String);
|
||||
method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(String, int);
|
||||
method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(String, String, @NonNull android.os.UserHandle);
|
||||
method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.GET_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(String, String, @NonNull android.os.UserHandle);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] getUnsuspendablePackages(@NonNull String[]);
|
||||
method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
|
||||
method @Deprecated public abstract int installExistingPackage(String) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
|
||||
@@ -640,7 +640,7 @@ package android.content.pm {
|
||||
method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
|
||||
method @Nullable public abstract String[] getNamesForUids(int[]);
|
||||
method public abstract String getPermissionControllerPackageName();
|
||||
method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS"}) public abstract int getPermissionFlags(String, String, @NonNull android.os.UserHandle);
|
||||
method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.GET_RUNTIME_PERMISSIONS"}) public abstract int getPermissionFlags(String, String, @NonNull android.os.UserHandle);
|
||||
method @NonNull public abstract String getServicesSystemSharedLibraryPackageName();
|
||||
method @NonNull public abstract String getSharedSystemSharedLibraryPackageName();
|
||||
method public String getWellbeingPackageName();
|
||||
|
||||
@@ -3867,7 +3867,8 @@ public abstract class PackageManager {
|
||||
@TestApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
|
||||
android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS
|
||||
android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
|
||||
android.Manifest.permission.GET_RUNTIME_PERMISSIONS
|
||||
})
|
||||
public abstract @PermissionFlags int getPermissionFlags(String permissionName,
|
||||
String packageName, @NonNull UserHandle user);
|
||||
|
||||
@@ -2229,7 +2229,7 @@ public class PermissionManagerService {
|
||||
return 0;
|
||||
}
|
||||
|
||||
enforceGrantRevokeRuntimePermissionPermissions("getPermissionFlags");
|
||||
enforceGrantRevokeGetRuntimePermissionPermissions("getPermissionFlags");
|
||||
|
||||
enforceCrossUserPermission(callingUid, userId,
|
||||
true, // requireFullPermission
|
||||
@@ -2596,6 +2596,20 @@ public class PermissionManagerService {
|
||||
}
|
||||
}
|
||||
|
||||
private void enforceGrantRevokeGetRuntimePermissionPermissions(@NonNull String message) {
|
||||
if (mContext.checkCallingOrSelfPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS)
|
||||
!= PackageManager.PERMISSION_GRANTED
|
||||
&& mContext.checkCallingOrSelfPermission(Manifest.permission.GRANT_RUNTIME_PERMISSIONS)
|
||||
!= PackageManager.PERMISSION_GRANTED
|
||||
&& mContext.checkCallingOrSelfPermission(Manifest.permission.REVOKE_RUNTIME_PERMISSIONS)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
throw new SecurityException(message + " requires "
|
||||
+ Manifest.permission.GRANT_RUNTIME_PERMISSIONS + " or "
|
||||
+ Manifest.permission.REVOKE_RUNTIME_PERMISSIONS + " or "
|
||||
+ Manifest.permission.GET_RUNTIME_PERMISSIONS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
|
||||
Reference in New Issue
Block a user