一、环境准备
环境准备及基础 http://t.csdnimg.cn/xQKzf
二、启动APP(以微信举例)
启动命令:adb shell am start “包名”/“开启活动名”
1、手机打开微信
2、cmd窗口输入
adb shell dumpsys window | findstr mCurrentFocus
显示如下信息:
这里com.tencent.mm 就是微信的包名
3、获取打开活动(Activity)
adb shell dumpsys package com.tencent.mm
这个返回的太乱了,需要筛选一下:adb shell dumpsys package com.tencent.mm | findstr \/ |findstr filter
这个就是对应的包+活动名 com.tencent.mm/.plugin.account.ui.ContactsSyncUI
4、adb启动微信
adb shell am start com.tencent.mm/.plugin.account.ui.ContactsSyncUI
如果测试启动时间:增加-W参数 adb shell am start -W com.tencent.mm/.plugin.account.ui.ContactsSyncUI
三、其他方法
1、 cmp
#打开需要获取的应用(不需要知道包名,第一个cmp后面的值即为activity)
adb shell dumpsys activity activities | findstr "cmp="
2、top
#有些傻逼APP,它会隐藏很多Activity的权限,用它定义的MainActivity去启动app会得到权限不足的回答。
#这样的APP,必须找到它的启动Activity
#办法是当启动的时候,不停的用命令提示符使用adb命令
adb shell dumpsys activity top | findstr ACTIVITY
四、尝试打开和家亲
以上方法尝试获取和家亲的activity,
尝试过关闭在启动adb adb kill-server
,adb start-server
查资料看说 AndroidManifest.xml 清单有关,在手机APP安装路径尝试找,没找到没找到。。。
以上方法获取的都报错,实在是让人头疼
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.cmri.universalapp/.smarthome.control.view.CameraControlActivity } from null (pid=27931, uid=2000) not exported from uid 10393
at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1242)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1221)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:867)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1465)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1416)
at com.android.server.am.ActivityManagerService.startActivityAsUserWithFeature(ActivityManagerService.java:3397)
at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:771)
at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:253)
at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
at android.os.ShellCommand.exec(ShellCommand.java:38)
at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10242)
at android.os.Binder.shellCommand(Binder.java:1075)
at android.os.Binder.onTransact(Binder.java:895)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5776)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2852)
at android.os.Binder.execTransactInternal(Binder.java:1351)
at android.os.Binder.execTransact(Binder.java:1282)
直接暴力尝试,获取到所有带‘filter’的活动,准备拿出来在Excel中去重,然后一个一个去试下
与此同时看到了一个熟悉的身影,有个活动名称和查资料的时候一样
参考http://t.csdnimg.cn/N6Pl9
尝试下com.cmri.universalapp/.splash.activity.SplashActivity
果然可以,,,,如原博所说,傻逼 和家亲
五、参考文章
使用ADB启动手机APP http://t.csdnimg.cn/N6Pl9
使用adb命令启动app http://t.csdnimg.cn/QbEgc
最好的ADB教程,从下载安装到使用的详细说明,从小白到工作【win+ linux】http://t.csdnimg.cn/GokNx