Fix crash when using SatelliteSOSMessageRecommender without satellite feature
Bug: 310710841
Test: atest TelephonyConnectionServiceTest
Test: atest SatelliteSOSMessageRecommenderTest
Change-Id: I245aaf2a8344b4e3aad5d7695f743ebd6272a9b1
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 67b32df..9390931 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -33,6 +33,7 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelUuid;
@@ -4419,6 +4420,11 @@
private void handleEmergencyCallStartedForSatelliteSOSMessageRecommender(
@NonNull TelephonyConnection connection, @NonNull Phone phone) {
+ if (!phone.getContext().getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_TELEPHONY_SATELLITE)) {
+ return;
+ }
+
if (mSatelliteSOSMessageRecommender == null) {
mSatelliteSOSMessageRecommender = new SatelliteSOSMessageRecommender(phone.getContext(),
phone.getContext().getMainLooper());
diff --git a/tests/src/com/android/TestContext.java b/tests/src/com/android/TestContext.java
index 111df53..a96ce2e 100644
--- a/tests/src/com/android/TestContext.java
+++ b/tests/src/com/android/TestContext.java
@@ -19,6 +19,7 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
import android.content.AttributionSource;
import android.content.BroadcastReceiver;
@@ -61,6 +62,7 @@
@Mock SubscriptionManager mMockSubscriptionManager;
@Mock ImsManager mMockImsManager;
@Mock UserManager mMockUserManager;
+ @Mock PackageManager mPackageManager;
private final SparseArray<PersistableBundle> mCarrierConfigs = new SparseArray<>();
@@ -80,6 +82,7 @@
int subId = (int) invocation.getArguments()[0];
return getTestConfigs(subId);
}).when(mMockCarrierConfigManager).getConfigForSubId(anyInt(), anyString());
+ when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
}
@Override
@@ -145,6 +148,11 @@
}
@Override
+ public PackageManager getPackageManager() {
+ return mPackageManager;
+ }
+
+ @Override
public ContentResolver getContentResolver() {
return null;
}