From 068adff7a50bb775a9f127228ccc5e73be43b31f Mon Sep 17 00:00:00 2001 From: Mark Brophy Date: Wed, 27 Jul 2011 20:02:51 +0100 Subject: Handle just-removed pkgs in ApplicationsProvider. ApplicationsProvider queries whether apps are enabled or disabled to avoid returning disabled apps to global search. This query method can throw an exception if the package has since been removed. Catch it, and ignore the application in question. Bug: 5074590 Change-Id: Ie13938f7b3038fe704a94f7025371c553fe7adab --- .../applications/ApplicationsProvider.java | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/com/android/providers/applications/ApplicationsProvider.java b/src/com/android/providers/applications/ApplicationsProvider.java index 2d58ce8..73adf7a 100644 --- a/src/com/android/providers/applications/ApplicationsProvider.java +++ b/src/com/android/providers/applications/ApplicationsProvider.java @@ -558,18 +558,26 @@ public class ApplicationsProvider extends ContentProvider { private boolean isComponentEnabled(PackageManager manager, String packageName, String componentName) { - if (manager.getApplicationEnabledSetting(packageName) == - PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { - if (DBG) Log.d(TAG, "DISABLED package " + packageName); - return false; - } - if (manager.getComponentEnabledSetting(new ComponentName(packageName, componentName)) == - PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { - if (DBG) Log.d(TAG, "DISABLED component " + packageName + "/" + componentName); + try { + if (manager.getApplicationEnabledSetting(packageName) == + PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + if (DBG) Log.d(TAG, "DISABLED package " + packageName); + return false; + } + if (manager.getComponentEnabledSetting(new ComponentName(packageName, componentName)) == + PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + if (DBG) Log.d(TAG, "DISABLED component " + packageName + "/" + componentName); + return false; + } + + return true; + } catch (Exception e) { + if (DBG) { + Log.w(TAG, "Couldn't query component enabled status " + + packageName + "/" + componentName + ": " + e); + } return false; } - - return true; } @VisibleForTesting -- cgit v1.2.3