2013-08-29 14 views
6

Ich habe eine Frage zur Verwendung von ADB.So erhalten Sie Extras von derzeit laufenden Aktivitäten über ADB

Ich weiß, dass dieser Befehl:

adb shell dumpsys activity 

zeigen kann mir alle Aktivitäten, die zur Zeit auf dem Gerät ausgeführt wird.

Aber ich merke, dass manchmal die Absichten so aussehen:

Intent { ...some_intent/activity_name.... (has extras) } 

Ich weiß, dass Extras bedeuten, dass die Aktivität mit irgendeiner Art von Parametern an sie übergeben gestartet wurde (ich kann hier falsch sein, bitte korrigiere mich, wenn ich es bin).

Also meine Frage ist, wie kann ich die Extras der Absicht/Aktivität durch ADB bekommen?

Der Grund, warum ich dies brauche, ist, weil ich versuche, eine apk zu starten durch ADB-Befehl (das am Telefon installiert ist), so etwas wie:

adb shell "su -c 'am start -n com.package.name/.ActivityName'" 

, das funktioniert und die Anwendung bringen. Die Anwendung hat einen Startbildschirm (sagen wir nennen es HomeActivity) und Sie müssen auf eine Schaltfläche klicken und einige Auswahl treffen (sagen SelectionActivity) und es wird zu einem anderen Bildschirm gehen (sagen wir ActionActivity). Ich möchte in der Lage sein, die Apk zu starten und es direkt zu ActionActivity zu bringen.

Die Anwendung wird abstürzen, wenn ich versuche, den ActionActivity mit Startbefehl zu starten, ich nehme an, dies ist, weil es Parameter vom SelectionActivity-Bildschirm erfordert.

Aus diesem Grund versuche ich zu sehen, was die „Extras“ oder Parameter sind, die die ActionActivity Bildschirm tatsächlich bekommt, so dass ich so etwas tun kann:

adb shell "su -c 'am start -n com.package.name/.ActionActivity -e param1 val1 -e param2 val2'" 

Hoffnung meine Frage klar.

Bitte korrigieren Sie mich, wenn ich irgendwo einen Fehler mache.

Vielen Dank im Voraus!

+0

sehen Sie, wenn diese zu drucken, er lps: [Wie kann ich Parameter an eine Testfunktion übergeben, die mit Hilfe der ADB-Shell gestartet wurde, ist der Instrumentation-Befehl] (http://StackOverflow.com/a/3229077/2558882). – Vikram

+0

Woher wissen Sie, dass nur Extras fehlen? Die erste Aktivität könnte etwas anderes tun. BTW, du brauchst normalerweise nicht 'su', um' am' zu laufen. –

+0

Haben Sie jemals eine Antwort darauf gefunden?Ich versuche genau dasselbe zu tun. –

Antwort

2

Wenn ich richtig verstehe, ist Ihr Ziel, die 'Aktion' Aktivität mit der richtigen Absicht zu starten, aber Sie wissen nicht, welche Art von Parameterinformationen enthalten sein sollten, richtig?

Der dumpsys Befehl alles, was Sie nicht wollen Dump wird, so einfach Ihr Ziel zu erreichen, Sie zwei Möglichkeiten haben (sollten Sie ein Gerät finden, die Sie Ihre eigene Firmware in sie brennen kann):

  1. ändern Sie den Dump-Methode in AMS weitere Informationen auszudrucken

  2. ändern Sie die ActivityThread Klasse Quellcode aus der detaillierten Angaben über die Absicht

+0

Hallo Robin, Danke für die Antwort. Leider kann ich den Quellcode der ActivityThread-Klasse nicht ändern, da die Apk nicht meine ist, also gibt es keine Möglichkeit, den Quellcode zu ändern, um etwas zu setzen. – JJackJi

+0

Hallo Robin, Danke für die Antwort. Leider kann ich den Quellcode der ActivityThread-Klasse nicht ändern, da die Apk nicht meine ist, also kann ich den Quellcode nicht ändern, um etwas extra zu drucken. Zum Ändern der Dumpsys-Methode, ich fürchte, das ist keine Option für mich. Mein Projekt erfordert, dass ich die Firmware verwende, die sich derzeit auf dem Telefon befindet. Gibt es keine integrierten Android-ADB-Befehle, um dies zu erreichen? Danke! – JJackJi

+0

Ich meine, Sie wollen nur die Informationen bekommen. Sie können also eine angepasste Firmware verwenden, um die gewünschten Informationen zu erhalten. Mit einer angepassten Firmware können Sie entweder Dumpsys oder Activity-Thread-Quellcode ändern. Sie sind beide Framework-Quellcodes. Dies ist nur ein Ansatz, um Ihr Ziel zu erreichen. – Robin

Verwandte Themen