summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brophy <mbrophy@google.com>2011-07-27 20:02:51 +0100
committerThe Android Automerger <android-build@android.com>2011-07-27 14:36:02 -0700
commit068adff7a50bb775a9f127228ccc5e73be43b31f (patch)
treed1e2d73b64c4f5dde0dd3428c3c03069ef1ba70b
parent1f298d3dec8ac178cac0d61eba296bd9099ea11d (diff)
downloadApplicationsProvider-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.java28
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