diff options
| author | Dianne Hackborn <hackbod@google.com> | 2009-09-28 23:57:05 -0700 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2009-09-28 23:57:05 -0700 |
| commit | 7eca687c2ee8f633678a1cd3ebf0886c0e6bbcf9 (patch) | |
| tree | e6dead5a54cd6ecdc59d43a90568c8f724063cef /core/java | |
| parent | ffc165446a7188cadfbc9f99fafac27d11254a54 (diff) | |
Fix bug where we would return null with disabled components.
Change-Id: I1624a42803f1c4b02736f558a8eeeeba2890667e
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 27c65f036500..3e117d49a3b8 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -195,7 +195,15 @@ public class PackageParser { if ((flags&PackageManager.GET_ACTIVITIES) != 0) { int N = p.activities.size(); if (N > 0) { - pi.activities = new ActivityInfo[N]; + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.activities = new ActivityInfo[N]; + } else { + int num = 0; + for (int i=0; i<N; i++) { + if (p.activities.get(i).info.enabled) num++; + } + pi.activities = new ActivityInfo[num]; + } for (int i=0; i<N; i++) { final Activity activity = p.activities.get(i); if (activity.info.enabled @@ -208,7 +216,15 @@ public class PackageParser { if ((flags&PackageManager.GET_RECEIVERS) != 0) { int N = p.receivers.size(); if (N > 0) { - pi.receivers = new ActivityInfo[N]; + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.receivers = new ActivityInfo[N]; + } else { + int num = 0; + for (int i=0; i<N; i++) { + if (p.receivers.get(i).info.enabled) num++; + } + pi.receivers = new ActivityInfo[num]; + } for (int i=0; i<N; i++) { final Activity activity = p.receivers.get(i); if (activity.info.enabled @@ -221,7 +237,15 @@ public class PackageParser { if ((flags&PackageManager.GET_SERVICES) != 0) { int N = p.services.size(); if (N > 0) { - pi.services = new ServiceInfo[N]; + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.services = new ServiceInfo[N]; + } else { + int num = 0; + for (int i=0; i<N; i++) { + if (p.services.get(i).info.enabled) num++; + } + pi.services = new ServiceInfo[num]; + } for (int i=0; i<N; i++) { final Service service = p.services.get(i); if (service.info.enabled @@ -234,7 +258,15 @@ public class PackageParser { if ((flags&PackageManager.GET_PROVIDERS) != 0) { int N = p.providers.size(); if (N > 0) { - pi.providers = new ProviderInfo[N]; + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.providers = new ProviderInfo[N]; + } else { + int num = 0; + for (int i=0; i<N; i++) { + if (p.providers.get(i).info.enabled) num++; + } + pi.providers = new ProviderInfo[num]; + } for (int i=0; i<N; i++) { final Provider provider = p.providers.get(i); if (provider.info.enabled |
