Skip checking satellite access restriction when disabling satellite
Bug: 313773568
Test: SatelliteManagerTestOnMockService
Manually test with SatelliteTestApp
SMS, MMS, call with live network
Change-Id: Ie3219d159547214db5bbd364fddb17b304a1a868
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 44ef30a..9106796 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -13004,34 +13004,41 @@
public void requestSatelliteEnabled(int subId, boolean enableSatellite, boolean enableDemoMode,
@NonNull IIntegerConsumer callback) {
enforceSatelliteCommunicationPermission("requestSatelliteEnabled");
- ResultReceiver resultReceiver = new ResultReceiver(mMainThreadHandler) {
- @Override
- protected void onReceiveResult(int resultCode, Bundle resultData) {
- Log.d(LOG_TAG, "Satellite access restriction resultCode=" + resultCode
- + ", resultData=" + resultData);
- boolean isAllowed = false;
- Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(callback::accept);
- if (resultCode == SATELLITE_RESULT_SUCCESS) {
- if (resultData != null
- && resultData.containsKey(KEY_SATELLITE_COMMUNICATION_ALLOWED)) {
- isAllowed = resultData.getBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED);
+ if (enableSatellite) {
+ ResultReceiver resultReceiver = new ResultReceiver(mMainThreadHandler) {
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ Log.d(LOG_TAG, "Satellite access restriction resultCode=" + resultCode
+ + ", resultData=" + resultData);
+ boolean isAllowed = false;
+ Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(
+ callback::accept);
+ if (resultCode == SATELLITE_RESULT_SUCCESS) {
+ if (resultData != null
+ && resultData.containsKey(KEY_SATELLITE_COMMUNICATION_ALLOWED)) {
+ isAllowed = resultData.getBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED);
+ } else {
+ loge("KEY_SATELLITE_COMMUNICATION_ALLOWED does not exist.");
+ }
} else {
- loge("KEY_SATELLITE_COMMUNICATION_ALLOWED does not exist.");
+ result.accept(resultCode);
+ return;
}
- } else {
- result.accept(resultCode);
- return;
+ if (isAllowed) {
+ mSatelliteController.requestSatelliteEnabled(
+ subId, enableSatellite, enableDemoMode, callback);
+ } else {
+ result.accept(SATELLITE_RESULT_ACCESS_BARRED);
+ }
}
- if (isAllowed) {
- mSatelliteController.requestSatelliteEnabled(
- subId, enableSatellite, enableDemoMode, callback);
- } else {
- result.accept(SATELLITE_RESULT_ACCESS_BARRED);
- }
- }
- };
- mSatelliteAccessController.requestIsSatelliteCommunicationAllowedForCurrentLocation(
- subId, resultReceiver);
+ };
+ mSatelliteAccessController.requestIsSatelliteCommunicationAllowedForCurrentLocation(
+ subId, resultReceiver);
+ } else {
+ // No need to check if satellite is allowed at current location when disabling satellite
+ mSatelliteController.requestSatelliteEnabled(
+ subId, enableSatellite, enableDemoMode, callback);
+ }
}
/**