diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 7646c3c890148..1256e36c91e79 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -6139,6 +6139,9 @@ message DangerousPermissionState { // If the permission is granted to the uid optional bool is_granted = 4; + + // Permission flags as per android.content.pm.PermissionFlags + optional int32 permission_flags = 5; } /** diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index de03c4072fa8a..63439d5382249 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -1963,8 +1963,12 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { String permName = pkg.requestedPermissions[permNum]; PermissionInfo permissionInfo; + int permissionFlags = 0; try { permissionInfo = pm.getPermissionInfo(permName, 0); + permissionFlags = + pm.getPermissionFlags(permName, pkg.packageName, user); + } catch (PackageManager.NameNotFoundException ignored) { continue; } @@ -1979,6 +1983,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { e.writeString(permName); e.writeInt(pkg.applicationInfo.uid); e.writeString(pkg.packageName); + e.writeInt(permissionFlags); e.writeBoolean((pkg.requestedPermissionsFlags[permNum] & REQUESTED_PERMISSION_GRANTED) != 0);