터미널에서이 활동을 시작하고 싶습니다 : 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
했기 때문에 기본적으로 표준 “설정”메뉴가 열립니다. 터미널에서 특정 “전력 사용량 요약”페이지를 열려면 어떻게해야합니까?
답변
내 의견에 썼 듯이 셸 프롬프트 (또는 셸 스크립트)에서 작업 할 때 특별한주의가 필요합니다. 그중 하나는 $
일반적으로 변수를 나타내는 부호입니다. 그것이 문자 그대로 취해 져야한다면, 그것을 피해야합니다 (또는 전체 문자열을 작은 따옴표로 묶어야합니다). 인용 부호에 대한 유사한 규칙.
탈출 된 상태 $
에서 명령이 어떻게 보이는지 이미 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'
답변
$
하위 클래스 이름에서 이스케이프하면 작동합니다.
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>
설정 “application”( GitHub에서 볼 수 있음)에 대한 AndroidManifest.xml 파일 의 태그를 보고 의도를 찾을 수 있습니다 . 예를 들어, 다음에 대한 활동 정의는 다음과 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>