From c4eac9922314e678d24e774c82f443d56c7cee96 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 25 May 2016 10:52:33 -0600 Subject: [PATCH] Skip indexing content while user is locked. Otherwise we try touching printing services which throw. Bug: 28912897 Change-Id: I25638794b35fd383fbe67604ac921d16743628ad --- .../search/DynamicIndexableContentMonitor.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/com/android/settings/search/DynamicIndexableContentMonitor.java b/src/com/android/settings/search/DynamicIndexableContentMonitor.java index 6753a76d705..50d47fb58e3 100644 --- a/src/com/android/settings/search/DynamicIndexableContentMonitor.java +++ b/src/com/android/settings/search/DynamicIndexableContentMonitor.java @@ -34,10 +34,12 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; +import android.os.UserManager; import android.print.PrintManager; import android.print.PrintServicesLoader; import android.printservice.PrintServiceInfo; import android.provider.UserDictionary; +import android.util.Log; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; @@ -53,6 +55,7 @@ import java.util.List; public final class DynamicIndexableContentMonitor extends PackageMonitor implements InputManager.InputDeviceListener, LoaderManager.LoaderCallbacks> { + private static final String TAG = "DynamicIndexableContentMonitor"; private static final long DELAY_PROCESS_PACKAGE_CHANGE = 2000; @@ -84,6 +87,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme private Context mContext; private boolean mHasFeatureIme; + private boolean mRegistered; private static Intent getAccessibilityServiceIntent(String packageName) { final Intent intent = new Intent(AccessibilityService.SERVICE_INTERFACE); @@ -100,6 +104,14 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme public void register(Activity activity, int loaderId) { mContext = activity; + if (!mContext.getSystemService(UserManager.class).isUserUnlocked()) { + Log.w(TAG, "Skipping content monitoring because user is locked"); + mRegistered = false; + return; + } else { + mRegistered = true; + } + boolean hasFeaturePrinting = mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_PRINTING); mHasFeatureIme = mContext.getPackageManager().hasSystemFeature( @@ -151,7 +163,10 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme register(activity, Looper.getMainLooper(), UserHandle.CURRENT, false); } + @Override public void unregister() { + if (!mRegistered) return; + super.unregister(); InputManager inputManager = (InputManager) mContext.getSystemService(