从终端(或adb shell)启动“设置”下列出的活动


13

我想从终端开始此活动: com.android.settings.Settings$PowerUsageSummaryActivity

我试过了

am start -S com.android.settings/.Settings$PowerUsageSummaryActivity

这就是我得到的:

Stopping: com.android.settings
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings }

问题是am start命令忽略了$PowerUsageSummaryActivity部分,因此基本上我只是打开标准的“设置”菜单。如何从终端打开特定的“电源使用摘要”页面?


2
您是否尝试过将其放在单引号中,即'com.android.settings/.Settings$PowerUsageSummaryActivity'-或转义$类似字符- com.android.settings/.Settings\$PowerUsageSummaryActivity在处理表示变量的文字$符号时在shell上通常要做的事情?
伊兹

从终端顶部打开Tasker的RunLog活动怎么样?Tasker具有3点菜单,可打开“日志”窗口。
Nicola Al。

Answers:


12

正如我在评论中所写,在shell提示符下(或在shell脚本中)工作时,有些特殊字符需要格外小心。其中之一是$符号,通常表示变量。如果应从字面上看,则需要对其进行转义(或用单引号将整个字符串引起来)。引号的类似规则。

带有转义 符的命令应如何显示$,您已经可以在eldarerathis'答案中找到:

shell@android:/ # am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity

请注意-前面的“反斜杠”,$即转义符。如果您的命令包含一些从字面上看的内容,请使用相同的引号或空格。

myscript.sh first\ parameter\!
myscript.sh "first parameter!"

两者都将执行相同的操作:将字符串设为单个参数。在您的am start命令示例中,这是解析时发生的事情:

  • 命令: am
  • 参数1: start
  • 参数2: -S
  • 参数3: com.android.settings/.Settings$PowerUsageSummaryActivity
    • 有一个$,解释为:变量$PowerUsageSummaryActivity未设置,所以为空
    • 结论:参数3为 com.android.settings/.Settings

同样,如果你运行此直接通过注意adb shell,命令经过壳解析两次,所以你需要逃跑或引用的命令再次,就像这样:

user@desktop:~$ adb shell am start -n 'com.android.settings/.Settings\$PowerUsageSummaryActivity'

哦谢谢!哦,我怎么能忘记逃脱$ ...我感到很羞耻:)
茱尼乔(Juniecho)2013年

生活中的小事...容易忽略:)顺便说一句:如果这解决了您的问题,请考虑将其中一个答案标记为“已接受”(单击旁边的对号)[并投票给另一个:)]-因此对其他人来说,进入类似的陷阱很明显:)
Izzy

哦,我找到了对勾。所以这就是我接受答案的方式...谢谢,这是我第一次使用
stackexchange

随时欢迎您:)现在,您将看到它的工作原理:推广:)
Izzy

3
就我而言,使用bash只能这样做:adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity'。不知道为什么。
Firelord

5

$在子类名称中转义,它应该起作用:

shell@android:/ # am start -S com.android.settings/.Settings\$PowerUsageSummaryActivity
Starting: Intent { cmp=com.android.settings/.Settings$PowerUsageSummaryActivity }
shell@android:/ #

另一个选项是发送“电源使用情况”屏幕侦听的意图:

shell@android:/ # am start -a android.intent.action.POWER_USAGE_SUMMARY

您可以通过查看<action>AndroidManifest.xml文件中“设置”“应用程序”(可以在GitHub上查看)中的标签来找到意图。例如,以下是活动定义Settings$PowerUsageSummaryActivity

<activity android:name="Settings$PowerUsageSummaryActivity"
        android:label="@string/power_usage_summary_title"
        android:uiOptions="none"
        android:taskAffinity=""
        android:excludeFromRecents="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.action.POWER_USAGE_SUMMARY" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="com.android.settings.SHORTCUT" />
    </intent-filter>
    <!-- Some other stuff here... -->
</activity>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.