Fix include location data to check for coarse location first.

Bug: 222766399
Test: make, atest TelephonyLocationTests, manual
Change-Id: Id277d16aceb58324ec70eadfcd3fb871821707c9
This commit is contained in:
Rafael Higuera Silva
2022-03-21 16:57:20 +00:00
parent 3e0d815e33
commit 22ca59c42b
2 changed files with 15 additions and 25 deletions

View File

@@ -1030,12 +1030,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
callingFeatureId, callback, eventList, notifyNow, subId);
}
private void listen(String callingPackage, @Nullable String callingFeatureId,
IPhoneStateListener callback, Set<Integer> events, boolean notifyNow, int subId) {
listen(false, false, callingPackage,
callingFeatureId, callback, events, notifyNow, subId);
}
private void listen(boolean renounceFineLocationAccess,
boolean renounceCoarseLocationAccess, String callingPackage,
@Nullable String callingFeatureId, IPhoneStateListener callback,

View File

@@ -12171,15 +12171,7 @@ public class TelephonyManager {
})
@RequiresFeature(PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS)
public @Nullable ServiceState getServiceState() {
if (getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
if (getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION)) {
return getServiceState(INCLUDE_LOCATION_DATA_NONE);
} else {
return getServiceState(INCLUDE_LOCATION_DATA_COARSE);
}
}
return getServiceState(INCLUDE_LOCATION_DATA_FINE);
return getServiceState(getLocationData());
}
/**
@@ -16170,17 +16162,21 @@ public class TelephonyManager {
*/
public void registerTelephonyCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull TelephonyCallback callback) {
if (getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
if (getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION)) {
registerTelephonyCallback(INCLUDE_LOCATION_DATA_NONE, executor, callback);
return;
} else {
registerTelephonyCallback(INCLUDE_LOCATION_DATA_COARSE, executor, callback);
return;
}
}
registerTelephonyCallback(getLocationData(), executor, callback);
}
registerTelephonyCallback(INCLUDE_LOCATION_DATA_FINE, executor, callback);
private int getLocationData() {
boolean renounceCoarseLocation =
getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION);
boolean renounceFineLocation =
getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION);
if (renounceCoarseLocation) {
return INCLUDE_LOCATION_DATA_NONE;
} else if (renounceFineLocation) {
return INCLUDE_LOCATION_DATA_COARSE;
} else {
return INCLUDE_LOCATION_DATA_FINE;
}
}
/** @hide */