Merge "Revert "Remove coarse location pre-grant for preinstalled VrListenerServices."" into nyc-mr1-dev
This commit is contained in:
@@ -219,6 +219,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC
|
||||
String packageName = mNotificationAccessPackageToUserId.keyAt(i);
|
||||
revokeNotificationListenerAccess(packageName, grantUserId);
|
||||
revokeNotificationPolicyAccess(packageName);
|
||||
revokeCoarseLocationPermissionIfNeeded(packageName, grantUserId);
|
||||
mNotificationAccessPackageToUserId.removeAt(i);
|
||||
}
|
||||
}
|
||||
@@ -227,6 +228,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC
|
||||
if (!packageNames.contains(pkg)) {
|
||||
revokeNotificationListenerAccess(pkg, currentUserId);
|
||||
revokeNotificationPolicyAccess(pkg);
|
||||
revokeCoarseLocationPermissionIfNeeded(pkg, currentUserId);
|
||||
mNotificationAccessPackageToUserId.remove(pkg);
|
||||
}
|
||||
}
|
||||
@@ -234,6 +236,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC
|
||||
if (!allowed.contains(pkg)) {
|
||||
grantNotificationPolicyAccess(pkg);
|
||||
grantNotificationListenerAccess(pkg, currentUserId);
|
||||
grantCoarseLocationPermissionIfNeeded(pkg, currentUserId);
|
||||
mNotificationAccessPackageToUserId.put(pkg, currentUserId);
|
||||
}
|
||||
}
|
||||
@@ -657,6 +660,22 @@ public class VrManagerService extends SystemService implements EnabledComponentC
|
||||
flatSettings, userId);
|
||||
}
|
||||
|
||||
private void grantCoarseLocationPermissionIfNeeded(String pkg, int userId) {
|
||||
// Don't clobber the user if permission set in current state explicitly
|
||||
if (!isPermissionUserUpdated(Manifest.permission.ACCESS_COARSE_LOCATION, pkg, userId)) {
|
||||
mContext.getPackageManager().grantRuntimePermission(pkg,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION, new UserHandle(userId));
|
||||
}
|
||||
}
|
||||
|
||||
private void revokeCoarseLocationPermissionIfNeeded(String pkg, int userId) {
|
||||
// Don't clobber the user if permission set in current state explicitly
|
||||
if (!isPermissionUserUpdated(Manifest.permission.ACCESS_COARSE_LOCATION, pkg, userId)) {
|
||||
mContext.getPackageManager().revokeRuntimePermission(pkg,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION, new UserHandle(userId));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isPermissionUserUpdated(String permission, String pkg, int userId) {
|
||||
final int flags = mContext.getPackageManager().getPermissionFlags(
|
||||
permission, pkg, new UserHandle(userId));
|
||||
|
||||
Reference in New Issue
Block a user