summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/pm
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2013-09-05 16:38:58 -0700
committerChristopher Tate <ctate@google.com>2013-09-13 12:16:00 -0700
commita2a0850de8e7324db37e0595d5374bb9c9903461 (patch)
tree2c772f6c774385b6f254885ccb2c38dc3b7a23d4 /services/java/com/android/server/pm
parent9210bc85545f31973c957b5179e6a82d05f473c6 (diff)
downloadframeworks_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-xservices/java/com/android/server/pm/PackageManagerService.java33
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;