2013-11-04 8 views
10

Mein automatischer Test sendet Intents über adb shell am, aber ich habe Probleme bei der Angabe eines zusätzlichen, dass ein String Array ist.Wie wird der Extra-Wert von String [] Intent über die Befehlszeile gesendet?

Nach der Intent class docs ist es möglich, eine String [] extra zu einer Absicht zu setzen.

Der Befehl Intent specification docs für den Befehl enthält jedoch keinen String-Array-Typ. Die einzigen String-Typen I in der Dokumentation zu sehen sind normal String und vielleicht null „string“:

--esn <EXTRA_KEY> 
    Add a null extra. This option is not supported for URI intents. 
-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> 
    Add string data as a key-value pair. 

Ist es vermeidbar eine Java-Anwendung für die bloßen Zwecke des Versands von String-Arrays zu schreiben?

Gibt es eine Möglichkeit, einen String [] extra von der Befehlszeile zu senden?

bearbeiten für den Fall, dass dies auf diese Weise nicht möglich ist, was ist der bevorzugte Weg, dies zu tun?

Antwort

10

Für jemand anderes für diese suchen die Befehlszeilen-Flags für Extras sind unter

-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> 
--esn <EXTRA_KEY> 
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> 
--ei <EXTRA_KEY> <EXTRA_INT_VALUE> 
--el <EXTRA_KEY> <EXTRA_LONG_VALUE> 
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> 
--eu <EXTRA_KEY> <EXTRA_URI_VALUE> 
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>] 
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...] 
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...] 
--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...] 
+4

Und Ihre Lösung für eine Zeichenfolge [] ist? –

+0

Bitte beachten Sie die Frage ... – heyjii

13

alte Frage, aber unbeantwortet aufgeführt.
adb shell am alle Optionen zeigt, unter ihnen gibt es:

[--esa <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]] 
    (to embed a comma into a string escape it using "\,") 
+0

wahrscheinlich wurde dies vor kurzem eingeführt, ich denke, es gab keine solche Option zuvor, wie in [Sean Loyola Anser] (http://StackOverflow.com/a/26517290/611007) gesehen. Gut zu wissen, dass es jetzt verfügbar ist, danke! Zuvor verwendete ich ein benutzerdefiniertes Programm, das ich für solche Jobs erstellt hatte. – n611x007

+1

Ja, es ist eine neue API. Ich habe nicht gefunden, als es eingeführt wurde. – auval

+0

Vielen Dank für diesen Kommentar. Dies löste eine einstündige Debugging-Sitzung. :) –

1

Die Aktion und Daten uri

adb shell am start -a "android.intent.action.VIEW" -d "http://www.google.com" 

Die Aktion wie SMS senden, MIME-Typ und eine zusätzliche Zeichenkette

adb shell am start -a "android.intent.action.SEND" --es "android.intent.extra.TEXT" "Hello Intent" -t "text/plain" 
zu starten

Ein expliziter Komponentenname zum Starten/Starten

adb shell am start -n "your.package.name/package.nameOf.Activity" 

Eine explizite Komponentennamen und eine zusätzliche Zeichenkette

adb shell am start -n your.AppPckage.name/package.nameOf.Activity --es "key" "value" 

So viele mit dem -E | es können Sie die zusätzlichen Daten in der Zeichenfolge senden hier

-E bedeuten nur zusätzliche Daten

Wenn Sie --es verwenden, die es bedeuten, die alle vorhandenen eine Aktivität zu stoppen und richtig Aktivität mit zusätzlichen Zeichenfolge beginnen Daten.

Nach Ihrem Bedarf können Sie eine der Kombination wählen. Für mehr Referenz verwenden Sie @seal loyola Antwort

Verwandte Themen