Check for null config from CarrierConfigManager.
Jonathan Basseri [Wed, 1 Jul 2015 22:00:38 +0000 (15:00 -0700)]
CarrierConfigManager can return a null bundle if an error occurred (e.g.
RemoteException) We received dozens of reports indicating that had
occurred at this call site, but they did not include logs explaining why
CarrierConfigManager had returned null. (see bug)

Bug: 22230051
Change-Id: I11f5ed44696d0ef8465e33bbed7abfb8b354d40a

src/java/com/android/ims/ImsManager.java

index f8f2bf6..3cb39f0 100644 (file)
@@ -22,6 +22,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
 import android.os.Message;
+import android.os.PersistableBundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemProperties;
@@ -788,8 +789,12 @@ public class ImsManager {
     private static boolean getBooleanCarrierConfig(Context context, String key) {
         CarrierConfigManager configManager = (CarrierConfigManager) context.getSystemService(
                 Context.CARRIER_CONFIG_SERVICE);
+        PersistableBundle b = null;
         if (configManager != null) {
-            return configManager.getConfig().getBoolean(key);
+            b = configManager.getConfig();
+        }
+        if (b != null) {
+            return b.getBoolean(key);
         } else {
             // Return static default defined in CarrierConfigManager.
             return CarrierConfigManager.getDefaultConfig().getBoolean(key);