由于工作需要,想获取所有应用的activity(这里仅限应用的主入口Launcher activity),搜索了一下,网上实现的方案都是基于android编程实现的,对于不懂开发的测试来说稍有难度,而且对于PC端测试工具来说可行性略差。

  给大家共享个非常简单的办法——通过monkey日志获取所有Launcher activity。

  当输入adb shell monkey -c android.intent.category.LAUNCHER -v -v -v  0,会得到以下格式日志。

    解释:-c android.intent.category.LAUNCHER意思是仅包含category属性为launcher的activity,也就是会在launcher上显示图标的应用。

      -v -v -v 是monkey的日志级别,感兴趣可以试试从只输入-v到3个-v的区别。

  当我们想知道单个应用的activity时,可以通过-p指定包名,通过monkey日志的Using main activity得到包对应的activity。

  图中标记部分分别是应用的类名和包名。

  

  获取这些信息后,通过简单的代码就可以进行结果格式化了。

  贴出部分代码,凑合看吧。 

  

 1 def get_all_launcher_activity(self):
 2     out, err = self.run_cmd(
 3         'shell monkey -c android.intent.category.LAUNCHER -v -v -v  0')
 4     out = out + err
 5     acs = {}
 6     for i in out:
 7         try:
 8             pkg = re.search(r'\(from package (.*?)\)', i).group(1)
 9             act = re.search(r'Using main activity (.*?) \(', i).group(1)
10             full_act = pkg + '/' + act
11             acs[pkg] = full_act
12             del pkg, act
13         except AttributeError:
14             pass
15     return acs

转载请声明出处。

转载于:https://www.cnblogs.com/mrleopard/p/9620171.html

通过adb巧用monkey获取android设备中所有应用的主activity相关推荐

  1. 获取Android设备中全部App

    获取android设备中全部app名称和应用包名 /*** 获取android设备中全部app名称和应用包名* */public void getAllAppNames(){ArrayList cus ...

  2. Android设备 D获取,如何获取Android设备名称(常用ADB命令介绍)

    如何获取Android设备名称 sdk安装和配置 1.Android SDK 工具的安装,下载地址:https://www.androiddevtools.cn 2.环境变量配置 2.1:增加选项AN ...

  3. Appium:获取Android设备手机屏幕分辨率

    Appium:获取Android设备的手机屏幕分辨率 使用Appium获取手机屏幕分辨率 print(driver.get_window_size()) # {'width': 1080, 'heig ...

  4. android获取wifi连接状态,获取android设备wifi连接状态

    本文将介绍如何获取android设备wifi连接状态! 添加访问权限(AndroidManifest.xml文件里) Java代码(MainActivity.java文件) package com.e ...

  5. android 摄像头参数,获取Android设备上的详细的摄像头信息

    原标题:获取Android设备上的详细的摄像头信息 如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头 ...

  6. ADB命令行卸载或删除你的Android设备中的应用

    如果你对你的Android设备在与命令行的交互间有一定的兴趣,那你可能想学习一些使用ADB卸载设备中已安装应用的技巧.为了使这种方法生效,你将需要在你的电脑中设置好Android ADB.可以去看看关 ...

  7. 通过ADB命令行卸载或删除你的Android设备中的应用

    对于通过ADB卸载一个应用程序,你必须知道这个应用程序的程序包名称,在这点上,你要注意的是,这未必是某应用的APK文件名字,比如Yahoo! Mail(雅虎邮箱)Android终端应用,它的程序包名称 ...

  8. java 如何获取设备号_java – 如何获取android设备ID?

    如何获取Android设备ID?我不知道什么是"背景". import android.content.Context; import android.provider.Setti ...

  9. 获取android设备唯一ID和用途

    获取android设备唯一ID和用途 编者:李国帅 qq:9611153 微信lgs9611153 时间:2021/5/16 获取android设备唯一ID: 在android9及之前,我们还是可以获 ...

最新文章

  1. 深度|全面了解一下这个世界上最奇葩的公司:Google!
  2. HTML, CSS. JS的各种奇淫技巧
  3. vsftp 添加虚拟帐号
  4. modelsim加入xilinx ISE库的方法
  5. linux内核启动后门,Linux下编写隐蔽的自启动回连后门
  6. JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
  7. rocksdb学习笔记
  8. dart系列之:dart优秀的秘诀-隔离机制
  9. AJPFX关于构造器的总结
  10. QT开发(十)——QT输入组件
  11. 数据可视化【一】JavaScript学习
  12. C语言(记录)——内存相关_2:内存的编址与管理
  13. ArcSDE工作机制
  14. 中文的括号和英文的括号区别_家庭教育的困惑 (数学,中/英文)
  15. 冒泡排序(普通,加强对比)
  16. IBM DS STORAGE MANAGER软件
  17. Openstack+Opencontrail安装与部署初级教程
  18. Could not start AVD
  19. DCGM-Exporter 安装 显卡监控 Prometheus
  20. 配置ST-GCN体会

热门文章

  1. day3----python变量与常量
  2. centos7.5部署ELk
  3. linux中查找文件属于那个软件包的方法
  4. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
  5. spring 的aop操作
  6. 验证码(captcha)的由来
  7. 【Java心得总结六】Java容器中——Collection
  8. 一个微软面试题--关于位结构体
  9. MyEclipse 10优化技巧
  10. matlab 判断对象的数据类型isa()