Add package command to print resolve activity.
Change-Id: I020a2b0e27f1430d9c2e9bf64f949e26610db147
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index dbb5818..c549b8c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -101,6 +101,8 @@
return runList();
case "uninstall":
return runUninstall();
+ case "resolve-activity":
+ return runResolveActivity();
case "query-intent-activities":
return runQueryIntentActivities();
case "query-intent-services":
@@ -565,6 +567,28 @@
return intent;
}
+ private int runResolveActivity() {
+ Intent intent;
+ try {
+ intent = parseIntentAndUser();
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ try {
+ ResolveInfo ri = mInterface.resolveIntent(intent, null, 0, mTargetUser);
+ PrintWriter pw = getOutPrintWriter();
+ if (ri == null) {
+ pw.println("No activity found");
+ } else {
+ PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+ ri.dump(pr, "");
+ }
+ } catch (RemoteException e) {
+ throw new RuntimeException("Failed calling service", e);
+ }
+ return 0;
+ }
+
private int runQueryIntentActivities() {
Intent intent;
try {
@@ -1016,6 +1040,8 @@
pw.println(" -s: short summary");
pw.println(" -d: only list dangerous permissions");
pw.println(" -u: list only the permissions users will see");
+ pw.println(" resolve-intent [--user USER_ID] INTENT");
+ pw.println(" Prints the activity that resolves to the given Intent.");
pw.println(" query-intent-activities [--user USER_ID] INTENT");
pw.println(" Prints all activities that can handle the given Intent.");
pw.println(" query-intent-services [--user USER_ID] INTENT");