summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brophy <mbrophy@google.com>2011-07-27 20:02:51 +0100
committerMark Brophy <mbrophy@google.com>2011-07-27 21:52:11 +0100
commit66e8779bfe82198684116e37d65f3c42bc737754 (patch)
treed1e2d73b64c4f5dde0dd3428c3c03069ef1ba70b
parent1f298d3dec8ac178cac0d61eba296bd9099ea11d (diff)
downloadApplicationsProvider-66e8779bfe82198684116e37d65f3c42bc737754.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