手机连接电脑,开启USB调试,【不懂去百度】
windows下载ADB,设置环境变量,然后打开cmd,【不懂去百度】
//获取手机上当前正在运行的APP的包名+Activity名
ADB命令:
adb shell dumpsys window | findstr mCurrentFocus
执行结果:
mCurrentFocus=Window{d9a816a u0 com.xxx.xxx/com.xxx.xxx.ui.activity.TabActivity}
其中com.xxx.xxx就是包名,
但是因为很多APP启动后显示的页面,并不是入口Activity,
因此,上面的结果中【com.xxx.xxx/com.xxx.xxx.ui.activity.TabActivity】并不一定能用来启动APP,
很多APP有个专门的过渡启动页,用来判断是否已经登录,登录了显示主页,没登录显示登录页。
ADB启动APP命令:
adb shell am start com.xxx.xxx/com.xxx.xxx.starActivity
【这个starActivity就是APP的启动入口Activity】
下面是找到这个APP入口Activity的命令:
adb shell dumpsys package com.xxx.xxx
执行这个命令,会显示一大堆信息,其中前面几行信息就是入口信息,排在最前面,但是信息太多,要翻页很久,
入口信息像这样:
b70c46b com.xxx.xxx/.ui.activity.LoadingActivity filter 9e6bc8
根据结果调整命令,加入搜索条件:findstr \/ | findstr filter
调整后的命令:
adb shell dumpsys package com.xxx.xxx | findstr \/ |findstr filter
这样就找到了4行信息,搜索条件包括两个条件【一:有/字符的,二:有filter字符串的】
如下,其中第一行就是我们需要的入口Activity信息:
b70c46b com.xxx.xxx/.ui.activity.LoadingActivity filter 9e6bc8
cfb0461 com.xxx.xxx/com.hyphenate.chat.EMMonitorReceiver filter 63c9b86【这个APP引用了其它的包,这里是其它包入口信息】
cfb0461 com.xxx.xxx/com.hyphenate.chat.EMMonitorReceiver filter ed53c47【这个APP引用了其它的包,这里是其它包入口信息】
cfb0461 com.xxx.xxx/com.hyphenate.chat.EMMonitorReceiver filter ed53c47【这个APP引用了其它的包,这里是其它包入口信息】
结论:
一、先用
adb shell dumpsys window | findstr mCurrentFocus
命令找到【当前连接电脑的手机正在运行的APP】的包名
二、再用
adb shell dumpsys package 包名 | findstr \/ |findstr filter
命令找到入口Activity。
三、使用
adb shell am start com.xxx.xxx/com.xxx.xxx.starActivity
启动APP