diff options
author | Christopher Tate <ctate@google.com> | 2013-09-05 16:38:58 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2013-09-13 12:16:00 -0700 |
commit | a2a0850de8e7324db37e0595d5374bb9c9903461 (patch) | |
tree | 2c772f6c774385b6f254885ccb2c38dc3b7a23d4 /services/java/com/android/server/pm | |
parent | 9210bc85545f31973c957b5179e6a82d05f473c6 (diff) | |
download | frameworks_base-a2a0850de8e7324db37e0595d5374bb9c9903461.zip frameworks_base-a2a0850de8e7324db37e0595d5374bb9c9903461.tar.gz frameworks_base-a2a0850de8e7324db37e0595d5374bb9c9903461.tar.bz2 |
Add hidden API for querying available 'home' activities
To support improved home-app selection UX in Settings.
Bug 9958444
Change-Id: I106090784618bf7bea6fce28f4f9b9fb8480d310
Diffstat (limited to 'services/java/com/android/server/pm')
-rwxr-xr-x | services/java/com/android/server/pm/PackageManagerService.java | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 686b64e..39fc4ad 100755 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -9716,10 +9716,6 @@ public class PackageManagerService extends IPackageManager.Stub { throw new IllegalArgumentException( "replacePreferredActivity expects filter to have only 1 action."); } - if (filter.countCategories() != 1) { - throw new IllegalArgumentException( - "replacePreferredActivity expects filter to have only 1 category."); - } if (filter.countDataAuthorities() != 0 || filter.countDataPaths() != 0 || filter.countDataSchemes() != 0 @@ -9756,8 +9752,11 @@ public class PackageManagerService extends IPackageManager.Stub { removed = new ArrayList<PreferredActivity>(); } removed.add(pa); - Log.i(TAG, "Removing preferred activity " + pa.mPref.mComponent + ":"); - filter.dump(new LogPrinter(Log.INFO, TAG), " "); + if (DEBUG_PREFERRED) { + Slog.i(TAG, "Removing preferred activity " + + pa.mPref.mComponent + ":"); + filter.dump(new LogPrinter(Log.INFO, TAG), " "); + } } } if (removed != null) { @@ -9877,6 +9876,28 @@ public class PackageManagerService extends IPackageManager.Stub { } @Override + public ComponentName getHomeActivities(List<ResolveInfo> allHomeCandidates) { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + + final int callingUserId = UserHandle.getCallingUserId(); + List<ResolveInfo> list = queryIntentActivities(intent, null, 0, callingUserId); + ResolveInfo preferred = findPreferredActivity(intent, null, 0, list, 0, + true, false, callingUserId); + + allHomeCandidates.clear(); + if (list != null) { + for (ResolveInfo ri : list) { + allHomeCandidates.add(ri); + } + } + return (preferred == null || preferred.activityInfo == null) + ? null + : new ComponentName(preferred.activityInfo.packageName, + preferred.activityInfo.name); + } + + @Override public void setApplicationEnabledSetting(String appPackageName, int newState, int flags, int userId, String callingPackage) { if (!sUserManager.exists(userId)) return; |