Merge changes from topic "phone-call-indicators" into rvc-qpr-dev am: ff2866cfd6 am: a592f49c5b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12406147 Change-Id: I8c6413133542605e73d249c54e86e64635b49e2b
This commit is contained in:
committed by
Automerger Merge Worker
commit
408d3fe36d
@@ -68,6 +68,12 @@ public class AppOpsControllerImpl implements AppOpsController,
|
||||
private final AppOpsManager mAppOps;
|
||||
private final AudioManager mAudioManager;
|
||||
private final LocationManager mLocationManager;
|
||||
|
||||
// mLocationProviderPackages are cached and updated only occasionally
|
||||
private static final long LOCATION_PROVIDER_UPDATE_FREQUENCY_MS = 30000;
|
||||
private long mLastLocationProviderPackageUpdate;
|
||||
private List<String> mLocationProviderPackages;
|
||||
|
||||
private H mBGHandler;
|
||||
private final List<AppOpsController.Callback> mCallbacks = new ArrayList<>();
|
||||
private final SparseArray<Set<Callback>> mCallbacksByCode = new SparseArray<>();
|
||||
@@ -293,6 +299,26 @@ public class AppOpsControllerImpl implements AppOpsController,
|
||||
return isUserVisible(item.getCode(), item.getUid(), item.getPackageName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a package is the current location provider.
|
||||
*
|
||||
* <p>Data is cached to avoid too many calls into system server
|
||||
*
|
||||
* @param packageName The package that might be the location provider
|
||||
*
|
||||
* @return {@code true} iff the package is the location provider.
|
||||
*/
|
||||
private boolean isLocationProvider(String packageName) {
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
if (mLastLocationProviderPackageUpdate + LOCATION_PROVIDER_UPDATE_FREQUENCY_MS < now) {
|
||||
mLastLocationProviderPackageUpdate = now;
|
||||
mLocationProviderPackages = mLocationManager.getProviderPackages(
|
||||
LocationManager.FUSED_PROVIDER);
|
||||
}
|
||||
|
||||
return mLocationProviderPackages.contains(packageName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the app-op, uid and package name, refer to an operation that should be shown to the
|
||||
@@ -314,8 +340,7 @@ public class AppOpsControllerImpl implements AppOpsController,
|
||||
return true;
|
||||
}
|
||||
|
||||
if (appOpCode == AppOpsManager.OP_CAMERA && mLocationManager.isProviderPackage(
|
||||
packageName)) {
|
||||
if (appOpCode == AppOpsManager.OP_CAMERA && isLocationProvider(packageName)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user