summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-09-28 23:57:05 -0700
committerDianne Hackborn <hackbod@google.com>2009-09-28 23:57:05 -0700
commit7eca687c2ee8f633678a1cd3ebf0886c0e6bbcf9 (patch)
treee6dead5a54cd6ecdc59d43a90568c8f724063cef /core/java
parentffc165446a7188cadfbc9f99fafac27d11254a54 (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.java40
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