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;
     }