diff options
author | Kenny Root <kroot@google.com> | 2011-05-19 11:04:01 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-05-19 11:04:01 -0700 |
commit | 2433c443bb5fe96d9a39b59e10e3c03d791e2278 (patch) | |
tree | 7feb2b64268b9b476e4fa5c91b19cdee3f86c117 /cmds/pm/src/com/android | |
parent | 4b999030ad3e9f8d392d72c725134ec3fb6d2290 (diff) | |
parent | f2006f3123dcdf598e052051041b49c89710b53e (diff) | |
download | frameworks_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/src/com/android')
-rw-r--r-- | cmds/pm/src/com/android/commands/pm/Pm.java | 21 |
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. * |