get launchable activity name of package from adb

后端 未结 8 789
春和景丽
春和景丽 2020-11-28 02:09

Is there a way to get the launchable activity for a package from using adb? For an unroot phone (i.e. without having the pull the apk from /data/

相关标签:
8条回答
  • 2020-11-28 02:31

    I didn't find it listed so updating the list.

    You need to have the apk installed and running in front on your phone for this solution:

    Windows CMD line:

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

    Linux Terminal:

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

    OUTPUT for Calculator package would be:

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

    Main part is, First Line:

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

    First part of the output is package name:

    com.android.calculator2

    Second Part of output (which is after /) can be two things, in our case its:

    com.android.calculator2.Calculator

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

      so .Calculator is our activity

    2. If second part is entirely different from Package name and doesn't seem to contain pkg name which was before / in out output, then entire second part can be used as main activity.

    0 讨论(0)
  • 2020-11-28 02:34
    #!/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'
    

    sample:

    getActivity.sh com.tencent.mm
    com.tencent.mm/.ui.LauncherUI
    
    0 讨论(0)
提交回复
热议问题