Merge "Check for ACCESS_COARSE_LOCATION/ACCESS_FINE_LOCATION" into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b83b5fa641
@@ -3119,7 +3119,13 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
final PackageParser.Package p = mPackages.get(pkgName);
|
final PackageParser.Package p = mPackages.get(pkgName);
|
||||||
if (p != null && p.mExtras != null) {
|
if (p != null && p.mExtras != null) {
|
||||||
final PackageSetting ps = (PackageSetting) p.mExtras;
|
final PackageSetting ps = (PackageSetting) p.mExtras;
|
||||||
if (ps.getPermissionsState().hasPermission(permName, userId)) {
|
final PermissionsState permissionsState = ps.getPermissionsState();
|
||||||
|
if (permissionsState.hasPermission(permName, userId)) {
|
||||||
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
|
}
|
||||||
|
// Special case: ACCESS_FINE_LOCATION permission includes ACCESS_COARSE_LOCATION
|
||||||
|
if (Manifest.permission.ACCESS_COARSE_LOCATION.equals(permName) && permissionsState
|
||||||
|
.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION, userId)) {
|
||||||
return PackageManager.PERMISSION_GRANTED;
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3140,13 +3146,25 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid));
|
Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid));
|
||||||
if (obj != null) {
|
if (obj != null) {
|
||||||
final SettingBase ps = (SettingBase) obj;
|
final SettingBase ps = (SettingBase) obj;
|
||||||
if (ps.getPermissionsState().hasPermission(permName, userId)) {
|
final PermissionsState permissionsState = ps.getPermissionsState();
|
||||||
|
if (permissionsState.hasPermission(permName, userId)) {
|
||||||
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
|
}
|
||||||
|
// Special case: ACCESS_FINE_LOCATION permission includes ACCESS_COARSE_LOCATION
|
||||||
|
if (Manifest.permission.ACCESS_COARSE_LOCATION.equals(permName) && permissionsState
|
||||||
|
.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION, userId)) {
|
||||||
return PackageManager.PERMISSION_GRANTED;
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ArraySet<String> perms = mSystemPermissions.get(uid);
|
ArraySet<String> perms = mSystemPermissions.get(uid);
|
||||||
if (perms != null && perms.contains(permName)) {
|
if (perms != null) {
|
||||||
return PackageManager.PERMISSION_GRANTED;
|
if (perms.contains(permName)) {
|
||||||
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
|
}
|
||||||
|
if (Manifest.permission.ACCESS_COARSE_LOCATION.equals(permName) && perms
|
||||||
|
.contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
|
||||||
|
return PackageManager.PERMISSION_GRANTED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user