Fix include location data to check for coarse location first.

Bug: 222766399
Test: make, atest TelephonyLocationTests, manual
Change-Id: Id277d16aceb58324ec70eadfcd3fb871821707c9
Merged-In: Id277d16aceb58324ec70eadfcd3fb871821707c9
(cherry picked from commit 22ca59c42b)
This commit is contained in:
Rafael Higuera Silva
2022-03-21 16:57:20 +00:00
parent 7809404637
commit ce7867d377
2 changed files with 15 additions and 25 deletions

View File

@@ -1036,12 +1036,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

@@ -12172,15 +12172,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());
}
/**
@@ -16171,17 +16163,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 */