summaryrefslogtreecommitdiffstats
path: root/cmds/pm
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2011-05-19 11:04:01 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-05-19 11:04:01 -0700
commit2433c443bb5fe96d9a39b59e10e3c03d791e2278 (patch)
tree7feb2b64268b9b476e4fa5c91b19cdee3f86c117 /cmds/pm
parent4b999030ad3e9f8d392d72c725134ec3fb6d2290 (diff)
parentf2006f3123dcdf598e052051041b49c89710b53e (diff)
downloadframeworks_base-2433c443bb5fe96d9a39b59e10e3c03d791e2278.zip
frameworks_base-2433c443bb5fe96d9a39b59e10e3c03d791e2278.tar.gz
frameworks_base-2433c443bb5fe96d9a39b59e10e3c03d791e2278.tar.bz2
am f2006f31: Merge "Break apart queries to getInstalled* API" into gingerbread
* commit 'f2006f3123dcdf598e052051041b49c89710b53e': Break apart queries to getInstalled* API
Diffstat (limited to 'cmds/pm')
-rw-r--r--cmds/pm/src/com/android/commands/pm/Pm.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index d764aa9..f2b6fce 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -30,14 +30,15 @@ import android.content.pm.InstrumentationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.net.Uri;
+import android.os.Parcel;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.provider.Settings;
import java.io.File;
import java.lang.reflect.Field;
@@ -223,7 +224,7 @@ public final class Pm {
String filter = nextArg();
try {
- List<PackageInfo> packages = mPm.getInstalledPackages(getFlags);
+ final List<PackageInfo> packages = getInstalledPackages(mPm, getFlags);
int count = packages.size();
for (int p = 0 ; p < count ; p++) {
@@ -247,6 +248,22 @@ public final class Pm {
}
}
+ @SuppressWarnings("unchecked")
+ private List<PackageInfo> getInstalledPackages(IPackageManager pm, int flags)
+ throws RemoteException {
+ final List<PackageInfo> packageInfos = new ArrayList<PackageInfo>();
+ PackageInfo lastItem = null;
+ ParceledListSlice<PackageInfo> slice;
+
+ do {
+ final String lastKey = lastItem != null ? lastItem.packageName : null;
+ slice = pm.getInstalledPackages(flags, lastKey);
+ lastItem = slice.populateList(packageInfos, PackageInfo.CREATOR);
+ } while (!slice.isLastSlice());
+
+ return packageInfos;
+ }
+
/**
* Lists all of the features supported by the current device.
*