@@ -8309,7 +8309,7 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
83098309 + android.Manifest.permission.DUMP);
83108310 return;
83118311 }
8312-
8312+
83138313 boolean dumpAll = false;
83148314 boolean dumpClient = false;
83158315 String dumpPackage = null;
@@ -8352,7 +8352,9 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
83528352 pw.println("Unknown argument: " + opt + "; use -h for help");
83538353 }
83548354 }
8355-
8355+
8356+ long origId = Binder.clearCallingIdentity();
8357+ boolean more = false;
83568358 // Is the caller requesting to dump a particular piece of data?
83578359 if (opti < args.length) {
83588360 String cmd = args[opti];
@@ -8361,7 +8363,6 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
83618363 synchronized (this) {
83628364 dumpActivitiesLocked(fd, pw, args, opti, true, dumpClient, null);
83638365 }
8364- return;
83658366 } else if ("broadcasts".equals(cmd) || "b".equals(cmd)) {
83668367 String[] newArgs;
83678368 String name;
@@ -8378,7 +8379,6 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
83788379 synchronized (this) {
83798380 dumpBroadcastsLocked(fd, pw, args, opti, true, name);
83808381 }
8381- return;
83828382 } else if ("intents".equals(cmd) || "i".equals(cmd)) {
83838383 String[] newArgs;
83848384 String name;
@@ -8395,7 +8395,6 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
83958395 synchronized (this) {
83968396 dumpPendingIntentsLocked(fd, pw, args, opti, true, name);
83978397 }
8398- return;
83998398 } else if ("processes".equals(cmd) || "p".equals(cmd)) {
84008399 String[] newArgs;
84018400 String name;
@@ -8412,12 +8411,10 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
84128411 synchronized (this) {
84138412 dumpProcessesLocked(fd, pw, args, opti, true, name);
84148413 }
8415- return;
84168414 } else if ("oom".equals(cmd) || "o".equals(cmd)) {
84178415 synchronized (this) {
84188416 dumpOomLocked(fd, pw, args, opti, true);
84198417 }
8420- return;
84218418 } else if ("provider".equals(cmd)) {
84228419 String[] newArgs;
84238420 String name;
@@ -8434,12 +8431,10 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
84348431 pw.println("No providers match: " + name);
84358432 pw.println("Use -h for help.");
84368433 }
8437- return;
84388434 } else if ("providers".equals(cmd) || "prov".equals(cmd)) {
84398435 synchronized (this) {
84408436 dumpProvidersLocked(fd, pw, args, opti, true, null);
84418437 }
8442- return;
84438438 } else if ("service".equals(cmd)) {
84448439 String[] newArgs;
84458440 String name;
@@ -8457,13 +8452,11 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
84578452 pw.println("No services match: " + name);
84588453 pw.println("Use -h for help.");
84598454 }
8460- return;
84618455 } else if ("package".equals(cmd)) {
84628456 String[] newArgs;
84638457 if (opti >= args.length) {
84648458 pw.println("package: no package name specified");
84658459 pw.println("Use -h for help.");
8466- return;
84678460 } else {
84688461 dumpPackage = args[opti];
84698462 opti++;
@@ -8472,22 +8465,25 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
84728465 args.length - opti);
84738466 args = newArgs;
84748467 opti = 0;
8468+ more = true;
84758469 }
84768470 } else if ("services".equals(cmd) || "s".equals(cmd)) {
84778471 synchronized (this) {
84788472 dumpServicesLocked(fd, pw, args, opti, true, dumpClient, null);
84798473 }
8480- return;
84818474 } else {
84828475 // Dumping a single activity?
84838476 if (!dumpActivity(fd, pw, cmd, args, opti, dumpAll)) {
84848477 pw.println("Bad activity command, or no activities match: " + cmd);
84858478 pw.println("Use -h for help.");
84868479 }
8480+ }
8481+ if (!more) {
8482+ Binder.restoreCallingIdentity(origId);
84878483 return;
84888484 }
84898485 }
8490-
8486+
84918487 // No piece of data specified, dump everything.
84928488 synchronized (this) {
84938489 boolean needSep;
@@ -8528,8 +8524,9 @@ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
85288524 }
85298525 dumpProcessesLocked(fd, pw, args, opti, dumpAll, dumpPackage);
85308526 }
8527+ Binder.restoreCallingIdentity(origId);
85318528 }
8532-
8529+
85338530 boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
85348531 int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) {
85358532 pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)");
0 commit comments