Merge "Add check for GSM MMI code and skip domain selection." into main
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 01ba40a..ec85361 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -10766,11 +10766,14 @@
 
     /**
      * Get the current calling package name.
-     * @return the current calling package name
+     *
+     * @return the current calling package name, or null if there is no known package.
      */
     @Override
-    public String getCurrentPackageName() {
-        return mApp.getPackageManager().getPackagesForUid(Binder.getCallingUid())[0];
+    public @Nullable String getCurrentPackageName() {
+        PackageManager pm = mApp.getPackageManager();
+        String[] packageNames = pm == null ? null : pm.getPackagesForUid(Binder.getCallingUid());
+        return packageNames == null ? null : packageNames[0];
     }
 
     /**
diff --git a/tests/src/com/android/phone/PhoneInterfaceManagerTest.java b/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
index a96bc2f..611373f 100644
--- a/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
+++ b/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
@@ -61,6 +61,8 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 import java.util.Locale;
 
 /**
@@ -408,4 +410,20 @@
         assertThrows(UnsupportedOperationException.class,
                 () -> mPhoneInterfaceManager.toggleRadioOnOffForSubscriber(1));
     }
+
+    @Test
+    public void testGetCurrentPackageNameWithNoKnownPackage() throws Exception {
+        Field field = PhoneInterfaceManager.class.getDeclaredField("mApp");
+        field.setAccessible(true);
+        Field modifiersField = Field.class.getDeclaredField("accessFlags");
+        modifiersField.setAccessible(true);
+        modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+        field.set(mPhoneInterfaceManager, mPhoneGlobals);
+
+        doReturn(mPackageManager).when(mPhoneGlobals).getPackageManager();
+        doReturn(null).when(mPackageManager).getPackagesForUid(anyInt());
+
+        String packageName = mPhoneInterfaceManager.getCurrentPackageName();
+        assertEquals(null, packageName);
+    }
 }