Ich möchte diese Aktivität vom Terminal aus starten: com.android.settings.Settings$PowerUsageSummaryActivity
Ich habe es versucht
am start -S com.android.settings/.Settings$PowerUsageSummaryActivity
und das bekomme ich:
Stopping: com.android.settings
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings }
Das Problem ist, dass der am start
Befehl den Teil weglässt$PowerUsageSummaryActivity
, so dass ich im Grunde nur das Standardmenü "Einstellungen" öffne. Wie kann ich diese bestimmte Seite mit der Zusammenfassung des Stromverbrauchs über das Terminal öffnen?
'com.android.settings/.Settings$PowerUsageSummaryActivity'
- oder Flucht der$
wiecom.android.settings/.Settings\$PowerUsageSummaryActivity
- das ist die übliche Material auf der Schale zu tun , wenn sie mit wörtlichen Umgang$
Zeichen nicht eine Variable , die angibt?Antworten:
Wie ich in meinem Kommentar schrieb, gibt es einige Sonderzeichen, die besondere Sorgfalt erfordern, wenn Sie an der Shell-Eingabeaufforderung (oder in Shellskripten) arbeiten. Eines davon ist das
$
Vorzeichen, das normalerweise eine Variable anzeigt. Wenn dies wörtlich genommen werden soll, müssen Sie es maskieren (oder die gesamte Zeichenfolge in einfache Anführungszeichen setzen). Ähnliche Regeln für Anführungszeichen.Wie Ihr Befehl sollte wie folgt aussehen mit einem entkommen
$
, können Sie bereits in finden eldarerathis' Antwort :Beachten Sie den "Back-Slash" vor dem
$
- das ist das Fluchtzeichen. Verwenden Sie dasselbe für Anführungszeichen oder Leerzeichen, wenn Ihr Befehl einige enthält, die wörtlich genommen werden sollen, zBeide würden dasselbe tun: Die Zeichenfolge zu einem einzigen Parameter machen. Im Beispiel Ihres
am start
Befehls ist Folgendes beim Parsen passiert:am
start
-S
com.android.settings/.Settings$PowerUsageSummaryActivity
$
, interpretiert: variable$PowerUsageSummaryActivity
ist nicht gesetzt, also leercom.android.settings/.Settings
Beachten Sie auch , dass , wenn Sie diese laufen direkt über
adb shell
der Befehl durch Shell geht zweimal Parsen, so dass Sie entkommen müssen, oder notieren Sie den Befehl erneut , wie folgt aus :quelle
adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity'
. Ich weiß nicht warum.Entziehen Sie den
$
Namen der Unterklasse und es sollte funktionieren:Eine andere Möglichkeit besteht darin, stattdessen die Absicht zu senden, auf die der Bildschirm "Stromverbrauch" wartet:
Sie finden die Absichten, indem Sie sich die
<action>
Tags in der AndroidManifest.xml-Datei für die Anwendung "Einstellungen" ansehen (die auf GitHub angezeigt werden kann ). Hier ist als Beispiel die Aktivitätsdefinition fürSettings$PowerUsageSummaryActivity
:quelle