做App压力测试、自动化测试等时,前提是要准备好包名和activity,那么如何获取呢?
0、找开发要 (最快捷 (๑•̀ㅂ•́)و✧)
1、需要先打开apk后,再敲入命令
adb shell dumpsys window w |findstr \/ |findstr name=
//(查看所有包名:adb shell pm list packages [-f])
2、uiautomation
3、testin云
41、反编译,比如apktool,打开AndroidManifestxml即可
42 反编译2
adb install d:\xxxxapk
aapt dump badging d:\xxxxapk 然后打印出第一行就包含包名
5、通过adb shell进入到手机data/data目录下,查看包名(需要root)
adb shell
cd data/data
ls
6、通过使用adb shell的dumpsys的另一个命令,查看包名(不需要root)
adb shell dumpsys activity> c:\logtxt#需要先打开apk后,再敲入命令
输入命令之后,cmd里没有任何提示,不过C盘目录下,会多一个logtxt文件。
打开logtxt文件,搜索 Stack #1,然后寻找cmp=
7、通过使用grep,查看包名(不需要root)
adb shell1|shell@RM-1057:/ $logcat | grep START#需要先打开apk后,再敲入命令
查看最下面
接下来,不论打开哪个APK,cmd命令会自动显示出包名和activity的名字,比如我又打开了相册~
可以看出相册的包名是comandroidgallery3d,activity名字是appGallery
1 adb shell dumpsys activity|findstr Focuse
2 adb shell dumpsys activity top
3 uiautomation
开发插件啊。简单的,利用intent将B中的界面拉起来进行处理,这是一种伪插件模式正经的一种框架为:利用PackageManagergetInstalledPackages来获取并筛选出属于A的插件,也就是B,并可以获知里面的package name和activity name。使用限定包名和类名的方式(Intent intent = new Intent(); ComponentName compList = new ComponentName("comandroid", "comandroid"); intentsetComponent(compList);)startActivity()就可以了,不过这样的插件模式还是挺没有意义的。最好的插件应该首先将A和B两个apk定义一样的sharedUserId,然后只是利用contextgetClassLoader()loadClass()之后利用反射直接调用插件里面定义的方法而不是拉起界面。
在Android中取得当前进程名
说明:上面代码关键的两个地方解释,也就是取得当前进程名
androidosProcessmyPid()) //获取PID,目前获取自己的也只有该API
ActivityManagerRunningAppProcessInfo类
说明: 封装了正在运行的进程信息
常用字段:
int pid 进程ID
int uid 进程所在的用户ID
String processName 进程名,默认是包名或者由Android:process=””属性指定
String [ ] pkgList 运行在该进程下的所有应用程序包名
在目的activity中获取intent启动源的名字的方法
1 先说在setClass启动一个Activity的方法吧:
Intent intent = new Intent();
intentsetClass(this, CreatePlaylistclass) //参数一为当前Package的context,t当前Activity的context就是this,其他Package可能用到createPackageContex()参数二为你要打开的Activity的类名
startActivity(intent);
2 通过Component Name来打开的方式
Intent intent = new Intent();
intentsetAction(IntentACTION_MAIN); //添加一些特性,具体可以查看Intent文档,相关属性的介绍
intentaddCategory(IntentCATEGORY_LAUNCHER);
intentsetFlags(IntentFLAG_ACTIVITY_NEW_TASK | IntentFLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
//通过Bundle向要打开的的Activity传递一些数据
Bundle bundle = new Bundle();
bundleputString("data", new String(" Hello World"));
intentputExtras(bundle);
intentsetComponent(new ComponentName(
new String("comandroidtestActivity"), new String("comandroidtestActivitytestActivity")));
startActivity(intent);
需要在跳转的Intent对象中添加一个参数:
intentputExtra("comeFrom", activityName);跳转到目标activity时带上当前activity的名字,这样才知道是从哪里跳转进来的。
以上就是关于快速获取App的packageName、Activity小结全部的内容,包括:快速获取App的packageName、Activity小结、如何查看一个apk中所有的activity的名称、如何在Android中取得当前进程名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)