有没有办法让包的可启动活动使用adb?对于unroot手机(即没有从/data/app目录中拉出apk 并检查appt).
我尝试过dumpsys,但它不包含有关默认可启动活动的信息.
谢谢
kab*_*uko 90
你不需要root来从中提取apk文件/data/app.当然,您可能没有权限列出该目录的内容,但您可以找到APK的文件位置:
adb shell pm list packages -f
Run Code Online (Sandbox Code Playgroud)
然后你可以使用adb pull:
adb pull <APK path from previous command>
Run Code Online (Sandbox Code Playgroud)
然后aapt获取您想要的信息:
aapt dump badging <pulledfile.apk>
Run Code Online (Sandbox Code Playgroud)
fri*_*mle 45
$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN
Run Code Online (Sandbox Code Playgroud)
Ale*_* P. 17
从Android 7.0开始,您可以使用adb shell cmd package resolve-activity命令获取已安装应用的默认活动,如下所示:
adb shell "cmd package resolve-activity --brief com.google.android.calculator | tail -n 1"
com.google.android.calculator/com.android.calculator2.Calculator
Run Code Online (Sandbox Code Playgroud)
Pra*_*ord 11
我没有找到它列出所以更新列表.
您需要在手机上安装apk并运行此解决方案:
Windows CMD系列:
adb shell dumpsys window windows | findstr <any unique string from your pkg Name>
Linux终端:
adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>
计算器包的OUTPUT将是:
Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:
mOwnerUid=10036 mShowToOwnerOnly=true package=com.android.calculator2 appop=NONE
mToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
mRootToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
mAppToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
WindowStateAnimator{3e160d22 com.android.calculator2/com.android.calculator2.Calculator}:
mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator)
mCurrentFocus=Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}
mFocusedApp=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
Run Code Online (Sandbox Code Playgroud)
主要部分是,第一线:
Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:
输出的第一部分是包名:
com.android.calculator2
输出的第二部分(后面的部分/)可以是两件事,在我们的例子中:
com.android.calculator2.Calculator
<PKg name>.<activity name> =
<com.android.calculator2>.<Calculator>
.Calculator我们的活动也是如此
如果第二部分与包名完全不同,并且似乎不包含/在输出之前的pkg名称,那么整个第二部分可以用作主要活动.
小智 10
#!/bin/bash
#file getActivity.sh
package_name=$1
#launch app by package name
adb shell monkey -p ${package_name} -c android.intent.category.LAUNCHER 1;
sleep 1;
#get Activity name
adb shell logcat -d | grep 'START u0' | tail -n 1 | sed 's/.*cmp=\(.*\)} .*/\1/g'
Run Code Online (Sandbox Code Playgroud)
样品:
getActivity.sh com.tencent.mm
com.tencent.mm/.ui.LauncherUI
Run Code Online (Sandbox Code Playgroud)