diff options
author | Mark Brophy <mbrophy@google.com> | 2011-07-27 20:02:51 +0100 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2011-07-27 14:36:02 -0700 |
commit | 068adff7a50bb775a9f127228ccc5e73be43b31f (patch) | |
tree | d1e2d73b64c4f5dde0dd3428c3c03069ef1ba70b | |
parent | 1f298d3dec8ac178cac0d61eba296bd9099ea11d (diff) | |
download | ApplicationsProvider-068adff7a50bb775a9f127228ccc5e73be43b31f.tar.gz |
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
-rw-r--r-- | src/com/android/providers/applications/ApplicationsProvider.java | 28 |
1 files 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 |