답변:
이것을 사용하십시오 :
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
응용 프로그램을 제어하려면, 당신은 올바른 값을 넣어해야합니다 <package_name>
및 <full_class_name>
명령에 있습니다. 예를 들어 com.google.gmail/com.google.gmail.check_mail
(가상 이름)을 명령의 마지막 부분으로 사용할 수 있습니다 .
앱의 패키지 이름을 얻는 것은 쉽지만 클래스 이름을 얻는 것은 쉽지 않습니다. 두 가지 문제가 있습니다.
많은 앱 개발자는 수업 정보를 비공개로 유지합니다.
모든 개발자가 스마트 모듈 식 프로그래밍을하는 것은 아닙니다. 의도에 의해 트리거 될 수있는 여러 클래스로 앱을 나누는 것이 좋은 습관이지만 모든 개발자가 똑똑하지는 않습니다.
첫 번째 문제의 해결책 : apktool을 사용하여 앱을 디 컴파일하고 모든 정보를 확인하십시오. 다른 방법도 있지만이 방법은 항상 작동하는 방법입니다 (앱이 SDK 대신 NDK를 기반으로하지 않는 경우).
두 번째 문제의 해결책 : 없음.
걱정하지 마십시오. 대부분의 인기있는 앱은 최상의 프로그래밍 방식을 따르며 Public API
클래스 정보를 얻을 수있는 기능을 제공 합니다.
apktools
(개발자가 아닌 개발자는 SDK의 일부라고 생각하여 길을 잃을 수도 있습니다.)
com.android.settings/.Settings$StorageSettingsActivity
. 직접 해보십시오. 실제로 $
부호 뒤에 그 문자열은 무엇 입니까? 설정 활동의 하위 클래스와 같은가요?
$StorageSettingsActivity
변수로 보이고 빈 문자열로 "확장"될 수 있습니다 (해당 이름으로 정의 된 변수가 없다면).
Sachin Shekhar가 말했듯이 다음 명령을 사용해야합니다.
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
구체적인 예를 참조하십시오.
aapt dump xmltree com.android.settings*.apk AndroidManifest.xml
"테 더링"메뉴를 시작하고 싶습니다. 출력에서 활동을 검색합니다.
(...)
E: activity (line=190)
A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)
최종 명령은 다음과 같습니다.
am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings
이 aapt
명령은 Android SDK의 일부입니다
com.android.settings
PATH를 생략 할 수 있으므로 상대 경로라고 말했습니다. 원하는 앱에서 테스트하십시오.
<package_name>
및<full_class_name>
방법과이를 얻기 위해? 나에게, 적어도 후자는 명확하지 않다.