Loading core/java/android/content/pm/IPackageManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -291,6 +291,8 @@ interface IPackageManager { */ ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates); void setHomeActivity(in ComponentName className, int userId); /** * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}. */ Loading Loading @@ -535,5 +537,4 @@ interface IPackageManager { boolean isPackageDeviceAdminOnAnyUser(String packageName); List<String> getPreviousCodePaths(in String packageName); } services/core/java/com/android/server/pm/PackageManagerService.java +40 −2 Original line number Diff line number Diff line Loading @@ -16459,10 +16459,22 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); return getHomeActivitiesAsUser(allHomeCandidates, UserHandle.getCallingUserId()); } ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { private Intent getHomeIntent() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); return intent; } private IntentFilter getHomeFilter() { IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); filter.addCategory(Intent.CATEGORY_HOME); filter.addCategory(Intent.CATEGORY_DEFAULT); return filter; } ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { Intent intent = getHomeIntent(); List<ResolveInfo> list = queryIntentActivitiesInternal(intent, null, PackageManager.GET_META_DATA, userId); ResolveInfo preferred = findPreferredActivity(intent, null, 0, list, 0, Loading @@ -16480,6 +16492,32 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); preferred.activityInfo.name); } @Override public void setHomeActivity(ComponentName comp, int userId) { ArrayList<ResolveInfo> homeActivities = new ArrayList<>(); getHomeActivitiesAsUser(homeActivities, userId); boolean found = false; final int size = homeActivities.size(); final ComponentName[] set = new ComponentName[size]; for (int i = 0; i < size; i++) { final ResolveInfo candidate = homeActivities.get(i); final ActivityInfo info = candidate.activityInfo; final ComponentName activityName = new ComponentName(info.packageName, info.name); set[i] = activityName; if (!found && activityName.equals(comp)) { found = true; } } if (!found) { throw new IllegalArgumentException("Component " + comp + " cannot be home on user " + userId); } replacePreferredActivity(getHomeFilter(), IntentFilter.MATCH_CATEGORY_EMPTY, set, comp, userId); } @Override public void setApplicationEnabledSetting(String appPackageName, int newState, int flags, int userId, String callingPackage) { services/core/java/com/android/server/pm/PackageManagerShellCommand.java +37 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ class PackageManagerShellCommand extends ShellCommand { return runSuspend(true); case "unsuspend": return runSuspend(false); case "set-home-activity": return runSetHomeActivity(); default: return handleDefaultCommands(cmd); } Loading Loading @@ -963,6 +965,39 @@ class PackageManagerShellCommand extends ShellCommand { return params; } private int runSetHomeActivity() { final PrintWriter pw = getOutPrintWriter(); int userId = UserHandle.USER_SYSTEM; String opt; while ((opt = getNextOption()) != null) { switch (opt) { case "--user": userId = UserHandle.parseUserArg(getNextArgRequired()); break; default: pw.println("Error: Unknown option: " + opt); return 1; } } String component = getNextArg(); ComponentName componentName = component != null ? ComponentName.unflattenFromString(component) : null; if (componentName == null) { pw.println("Error: component name not specified or invalid"); return 1; } try { mInterface.setHomeActivity(componentName, userId); return 0; } catch (RemoteException e) { pw.println(e.toString()); return 1; } } private static String checkAbiArgument(String abi) { if (TextUtils.isEmpty(abi)) { throw new IllegalArgumentException("Missing ABI argument"); Loading Loading @@ -1303,6 +1338,8 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" Suspends the specified package (as user)."); pw.println(" unsuspend [--user USER_ID] TARGET-PACKAGE"); pw.println(" Unsuspends the specified package (as user)."); pw.println(" set-home-activity [--user USER_ID] TARGET-COMPONENT"); pw.println(" set the default home activity (aka launcher)."); pw.println(); Intent.printIntentArgsHelp(pw , ""); } Loading Loading
core/java/android/content/pm/IPackageManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -291,6 +291,8 @@ interface IPackageManager { */ ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates); void setHomeActivity(in ComponentName className, int userId); /** * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}. */ Loading Loading @@ -535,5 +537,4 @@ interface IPackageManager { boolean isPackageDeviceAdminOnAnyUser(String packageName); List<String> getPreviousCodePaths(in String packageName); }
services/core/java/com/android/server/pm/PackageManagerService.java +40 −2 Original line number Diff line number Diff line Loading @@ -16459,10 +16459,22 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); return getHomeActivitiesAsUser(allHomeCandidates, UserHandle.getCallingUserId()); } ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { private Intent getHomeIntent() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); return intent; } private IntentFilter getHomeFilter() { IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); filter.addCategory(Intent.CATEGORY_HOME); filter.addCategory(Intent.CATEGORY_DEFAULT); return filter; } ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { Intent intent = getHomeIntent(); List<ResolveInfo> list = queryIntentActivitiesInternal(intent, null, PackageManager.GET_META_DATA, userId); ResolveInfo preferred = findPreferredActivity(intent, null, 0, list, 0, Loading @@ -16480,6 +16492,32 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); preferred.activityInfo.name); } @Override public void setHomeActivity(ComponentName comp, int userId) { ArrayList<ResolveInfo> homeActivities = new ArrayList<>(); getHomeActivitiesAsUser(homeActivities, userId); boolean found = false; final int size = homeActivities.size(); final ComponentName[] set = new ComponentName[size]; for (int i = 0; i < size; i++) { final ResolveInfo candidate = homeActivities.get(i); final ActivityInfo info = candidate.activityInfo; final ComponentName activityName = new ComponentName(info.packageName, info.name); set[i] = activityName; if (!found && activityName.equals(comp)) { found = true; } } if (!found) { throw new IllegalArgumentException("Component " + comp + " cannot be home on user " + userId); } replacePreferredActivity(getHomeFilter(), IntentFilter.MATCH_CATEGORY_EMPTY, set, comp, userId); } @Override public void setApplicationEnabledSetting(String appPackageName, int newState, int flags, int userId, String callingPackage) {
services/core/java/com/android/server/pm/PackageManagerShellCommand.java +37 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ class PackageManagerShellCommand extends ShellCommand { return runSuspend(true); case "unsuspend": return runSuspend(false); case "set-home-activity": return runSetHomeActivity(); default: return handleDefaultCommands(cmd); } Loading Loading @@ -963,6 +965,39 @@ class PackageManagerShellCommand extends ShellCommand { return params; } private int runSetHomeActivity() { final PrintWriter pw = getOutPrintWriter(); int userId = UserHandle.USER_SYSTEM; String opt; while ((opt = getNextOption()) != null) { switch (opt) { case "--user": userId = UserHandle.parseUserArg(getNextArgRequired()); break; default: pw.println("Error: Unknown option: " + opt); return 1; } } String component = getNextArg(); ComponentName componentName = component != null ? ComponentName.unflattenFromString(component) : null; if (componentName == null) { pw.println("Error: component name not specified or invalid"); return 1; } try { mInterface.setHomeActivity(componentName, userId); return 0; } catch (RemoteException e) { pw.println(e.toString()); return 1; } } private static String checkAbiArgument(String abi) { if (TextUtils.isEmpty(abi)) { throw new IllegalArgumentException("Missing ABI argument"); Loading Loading @@ -1303,6 +1338,8 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" Suspends the specified package (as user)."); pw.println(" unsuspend [--user USER_ID] TARGET-PACKAGE"); pw.println(" Unsuspends the specified package (as user)."); pw.println(" set-home-activity [--user USER_ID] TARGET-COMPONENT"); pw.println(" set the default home activity (aka launcher)."); pw.println(); Intent.printIntentArgsHelp(pw , ""); } Loading