Fix bug #14228591 NPE in settings app when it is launched by UiAutomator

- test for null references

Change-Id: Iff6efc92cc16ada9f6e8f057ba9c23a241e62000
This commit is contained in:
Fabrice Di Meglio
2014-04-21 15:32:28 -07:00
parent 7e920da656
commit 6d7bb92b38

View File

@@ -21,6 +21,8 @@ import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
import android.net.Uri; import android.net.Uri;
@@ -105,8 +107,11 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
final int accessibilityServiceCount = accessibilityServices.size(); final int accessibilityServiceCount = accessibilityServices.size();
for (int i = 0; i < accessibilityServiceCount; i++) { for (int i = 0; i < accessibilityServiceCount; i++) {
AccessibilityServiceInfo accessibilityService = accessibilityServices.get(i); AccessibilityServiceInfo accessibilityService = accessibilityServices.get(i);
mAccessibilityServices.add(accessibilityService.getResolveInfo() ResolveInfo resolveInfo = accessibilityService.getResolveInfo();
.serviceInfo.packageName); if (resolveInfo == null || resolveInfo.serviceInfo == null) {
continue;
}
mAccessibilityServices.add(resolveInfo.serviceInfo.packageName);
} }
// Cache print service packages to know when they go away. // Cache print service packages to know when they go away.
@@ -116,8 +121,11 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
final int serviceCount = printServices.size(); final int serviceCount = printServices.size();
for (int i = 0; i < serviceCount; i++) { for (int i = 0; i < serviceCount; i++) {
PrintServiceInfo printService = printServices.get(i); PrintServiceInfo printService = printServices.get(i);
mPrintServices.add(printService.getResolveInfo() ResolveInfo resolveInfo = printService.getResolveInfo();
.serviceInfo.packageName); if (resolveInfo == null || resolveInfo.serviceInfo == null) {
continue;
}
mPrintServices.add(resolveInfo.serviceInfo.packageName);
} }
// Cache IME service packages to know when they go away. // Cache IME service packages to know when they go away.
@@ -127,7 +135,9 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
final int inputMethodCount = inputMethods.size(); final int inputMethodCount = inputMethods.size();
for (int i = 0; i < inputMethodCount; i++) { for (int i = 0; i < inputMethodCount; i++) {
InputMethodInfo inputMethod = inputMethods.get(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. // Watch for related content URIs.