Merge "Fix bug #14228591 NPE in settings app when it is launched by UiAutomator"
diff --git a/src/com/android/settings/search/DynamicIndexableContentMonitor.java b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
index ad2cce8..af7f2e9 100644
--- a/src/com/android/settings/search/DynamicIndexableContentMonitor.java
+++ b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
@@ -21,6 +21,8 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
 import android.database.ContentObserver;
 import android.hardware.input.InputManager;
 import android.net.Uri;
@@ -105,8 +107,11 @@
         final int accessibilityServiceCount = accessibilityServices.size();
         for (int i = 0; i < accessibilityServiceCount; i++) {
             AccessibilityServiceInfo accessibilityService = accessibilityServices.get(i);
-            mAccessibilityServices.add(accessibilityService.getResolveInfo()
-                    .serviceInfo.packageName);
+            ResolveInfo resolveInfo = accessibilityService.getResolveInfo();
+            if (resolveInfo == null || resolveInfo.serviceInfo == null) {
+                continue;
+            }
+            mAccessibilityServices.add(resolveInfo.serviceInfo.packageName);
         }
 
         // Cache print service packages to know when they go away.
@@ -116,8 +121,11 @@
         final int serviceCount = printServices.size();
         for (int i = 0; i < serviceCount; i++) {
             PrintServiceInfo printService = printServices.get(i);
-            mPrintServices.add(printService.getResolveInfo()
-                    .serviceInfo.packageName);
+            ResolveInfo resolveInfo = printService.getResolveInfo();
+            if (resolveInfo == null || resolveInfo.serviceInfo == null) {
+                continue;
+            }
+            mPrintServices.add(resolveInfo.serviceInfo.packageName);
         }
 
         // Cache IME service packages to know when they go away.
@@ -127,7 +135,9 @@
         final int inputMethodCount = inputMethods.size();
         for (int i = 0; i < inputMethodCount; i++) {
             InputMethodInfo inputMethod = inputMethods.get(i);
-            mImeServices.add(inputMethod.getServiceInfo().packageName);
+            ServiceInfo serviceInfo = inputMethod.getServiceInfo();
+            if (serviceInfo == null) continue;
+            mImeServices.add(serviceInfo.packageName);
         }
 
         // Watch for related content URIs.