从adb获取包的可启动活动名称

时间:2012-10-02 21:43:02

标签: android adb

有没有办法使用adb来获取包的可启动活动?对于unroot手机(即没有从/data/app目录中取出apk并使用appt 进行检查)。

我尝试过dumpsys,但它不包含有关默认可启动活动的信息。

由于

7 个答案:

答案 0 :(得分:85)

您不需要root来从/data/app中提取apk文件。当然,您可能没有权限列出该目录的内容,但您可以通过以下方式找到APK的文件位置:

adb shell pm list packages -f

然后您可以使用adb pull

adb pull <APK path from previous command>

然后aapt获取您想要的信息:

aapt dump badging <pulledfile.apk>

答案 1 :(得分:43)

$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN

答案 2 :(得分:15)

从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

答案 3 :(得分:9)

我没有找到它,所以更新列表。

您需要在手机上安装并运行apk才能获得此解决方案

Windows CMD行:

ViewModels

Linux终端:

adb shell dumpsys window windows | findstr <any unique string from your pkg Name>

计算器包的OUTPUT为:

adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>

主要部分是第一行

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}}}

输出的第一部分是包名:

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:

输出的第二部分(在com.android.calculator2之后)可以是两件事,在我们的例子中:

/

  1. com.android.calculator2.Calculator = <PKg name>.<activity name>

    所以<com.android.calculator2>.<Calculator>是我们的活动

  2. 如果第二部分与包名完全不同,并且似乎不包含输出前.Calculator之前的pkg名称,那么整个     第二部分可以作为主要活动。

答案 4 :(得分:3)

以下是查找应用包名称和启动器活动的另一种方法。

步骤1:在命令提示符下启动“adb logcat”。

第2步:打开应用程序(在模拟器或真实设备中) enter image description here

答案 5 :(得分:1)

您还可以将ddms用于logcat日志,只需搜索应用程序名称即可获得所有信息,但您必须选择“信息”而不是“详细”或其他选项。请查看以下图片。

enter image description here

答案 6 :(得分:0)

启动您的应用并将其保持在前台。

运行以下命令:

  

adb shell dumpsys窗口窗口|找到“当前焦点”