Loading services/core/java/com/android/server/vr/VrManagerService.java +24 −1 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC new RemoteCallbackList<>(); private final ArraySet<String> mPreviousToggledListenerSettings = new ArraySet<>(); private String mPreviousNotificationPolicyAccessPackage; private String mPreviousCoarseLocationPackage; private String mPreviousManageOverlayPackage; private static final int MSG_VR_STATE_CHANGE = 0; Loading Loading @@ -446,6 +447,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC mWasDefaultGranted = true; grantCoarseLocationAccess(pName, userId); grantOverlayAccess(pName, userId); grantNotificationPolicyAccess(pName); grantNotificationListenerAccess(pName, userId); Loading Loading @@ -475,6 +477,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC String pName = component.getPackageName(); if (mWasDefaultGranted) { revokeCoarseLocationAccess(userId); revokeOverlayAccess(userId); revokeNotificationPolicyAccess(pName); revokeNotificiationListenerAccess(); Loading @@ -483,6 +486,27 @@ public class VrManagerService extends SystemService implements EnabledComponentC } private void grantCoarseLocationAccess(String pkg, UserHandle userId) { PackageManager pm = mContext.getPackageManager(); boolean prev = (PackageManager.PERMISSION_GRANTED == pm.checkPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION, pkg)); mPreviousCoarseLocationPackage = null; if (!prev) { pm.grantRuntimePermission(pkg, android.Manifest.permission.ACCESS_COARSE_LOCATION, userId); mPreviousCoarseLocationPackage = pkg; } } private void revokeCoarseLocationAccess(UserHandle userId) { PackageManager pm = mContext.getPackageManager(); if (mPreviousCoarseLocationPackage != null) { pm.revokeRuntimePermission(mPreviousCoarseLocationPackage, android.Manifest.permission.ACCESS_COARSE_LOCATION, userId); mPreviousCoarseLocationPackage = null; } } private void grantOverlayAccess(String pkg, UserHandle userId) { PackageManager pm = mContext.getPackageManager(); boolean prev = (PackageManager.PERMISSION_GRANTED == Loading @@ -504,7 +528,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC } } private void grantNotificationPolicyAccess(String pkg) { NotificationManager nm = mContext.getSystemService(NotificationManager.class); boolean prev = nm.isNotificationPolicyAccessGrantedForPackage(pkg); Loading Loading
services/core/java/com/android/server/vr/VrManagerService.java +24 −1 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC new RemoteCallbackList<>(); private final ArraySet<String> mPreviousToggledListenerSettings = new ArraySet<>(); private String mPreviousNotificationPolicyAccessPackage; private String mPreviousCoarseLocationPackage; private String mPreviousManageOverlayPackage; private static final int MSG_VR_STATE_CHANGE = 0; Loading Loading @@ -446,6 +447,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC mWasDefaultGranted = true; grantCoarseLocationAccess(pName, userId); grantOverlayAccess(pName, userId); grantNotificationPolicyAccess(pName); grantNotificationListenerAccess(pName, userId); Loading Loading @@ -475,6 +477,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC String pName = component.getPackageName(); if (mWasDefaultGranted) { revokeCoarseLocationAccess(userId); revokeOverlayAccess(userId); revokeNotificationPolicyAccess(pName); revokeNotificiationListenerAccess(); Loading @@ -483,6 +486,27 @@ public class VrManagerService extends SystemService implements EnabledComponentC } private void grantCoarseLocationAccess(String pkg, UserHandle userId) { PackageManager pm = mContext.getPackageManager(); boolean prev = (PackageManager.PERMISSION_GRANTED == pm.checkPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION, pkg)); mPreviousCoarseLocationPackage = null; if (!prev) { pm.grantRuntimePermission(pkg, android.Manifest.permission.ACCESS_COARSE_LOCATION, userId); mPreviousCoarseLocationPackage = pkg; } } private void revokeCoarseLocationAccess(UserHandle userId) { PackageManager pm = mContext.getPackageManager(); if (mPreviousCoarseLocationPackage != null) { pm.revokeRuntimePermission(mPreviousCoarseLocationPackage, android.Manifest.permission.ACCESS_COARSE_LOCATION, userId); mPreviousCoarseLocationPackage = null; } } private void grantOverlayAccess(String pkg, UserHandle userId) { PackageManager pm = mContext.getPackageManager(); boolean prev = (PackageManager.PERMISSION_GRANTED == Loading @@ -504,7 +528,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC } } private void grantNotificationPolicyAccess(String pkg) { NotificationManager nm = mContext.getSystemService(NotificationManager.class); boolean prev = nm.isNotificationPolicyAccessGrantedForPackage(pkg); Loading