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

  由于工作需要,想获取所有应用的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)

写这个的缘由是某人最近要从某旧山寨手机给某(更旧的)NOKIA手机同步通讯录,由于某山寨android手机输出的vCard文件是单文件里面包含多个记录数据的格式,而NOKIA的古老同步软件只支持单记录vcf,所以就要将单个vCard文件分割成多个vcf&#xff…

PWA · 前后端协作 · Node | JTalk 掘金线下活动第七期

通知 余票仅剩 3张,欢迎加入活动群获取更多通知。北京的小伙伴可以关注我们的 JTalk 第八期:前端安全 | 美团点评技术团队专场 ? 报名 扫码报名: 报名链接:点我报名 ? 介绍 本期 JTalk 来杭州啦! 掘金线下活动 J…

替代JavaOne 2013

我对无法参加JavaOne 2013感到很失望,但是很高兴看到涵盖这个年度会议的大量有用帖子。 在这篇文章中,我链接到许多这些资源,并提供了每篇文章相对于JavaOne 2013讨论内容的简短摘要。 主题演讲 主题演讲是“大公告”趋向于发生的地方。 幸运…

指数函数中x的取值范围_基本初等函数I: 指数函数、对数函数和幂函数

本文大约4800字, 建议学习时间1个小时.在学习过一次函数和二次函数(修改版)后, 我们知道, 一次函数ykxb当一次项系数k大于零时是增函数, 小于零时是减函数. 二次函数yax2bxc当二次项系数a大于零时图象沿x轴从左向右先减后增, a小于零时先增后减. 可以想象, 次数更高的函数, 在定…

Linux系统之TroubleShooting(启动故障排除)

尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题。那么这篇博文就总结一下一些常见的故障排除方法,但…

皮肤可配置化:变量、样式分离

之前皮肤开发了一个版本,抽是抽出来了,但是变量只抽出了几个颜色,没什么价值(上个版本开发过程), 这次我又进行了一次迭代,现在是一个较成熟的版本了。整体理一下思路,可以总结为3步…

linux下jboss分析helloword,JBoss 中运行servlet 的helloworld程序(转)

一..在server/default/deploy下创建test.war文件夹在test.war 下建WEB-INF文件夹在WEB-INF下建classes文件夹和web.xml二、运行在C:\jboss-3.2.1_tomcat-4.1.24\bin下点击run.bat运行。测试方法如下:http://localhost:8080/jmx-console看到jmx agent view表示成功三…

【考试记录】4.8 Path (网络流 —— 劲题)

手抄代码 学习指针 冥思苦想一晚上终于——在一瞬间开窍了。果然题目都是这样:突破了一个点,一切都是柳暗花明。 题面描述: 样例: 这道题目,首先注意到给定的边的性质:这些边在平面上构成了一棵树&#x…

Servlet 3.0概述

Servlet 3.0 –具有许多突破性的功能,这些功能最终将改变开发人员编写和编写JEE Web应用程序的方式–有人可能会说,它的约定违背了我们对事物在理论上“应该”如何工作的大多数理解,但这就是其中之一。创新和持续改进; 挑战公约并…

MySQL(介绍,安装,密码操作,权限表)

一、数据库介绍1、数据库相关概念a、支持并发b、锁的问题c、对客户端请求进行认证d、存取效率(降低IO次数)数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端)数据库管理管理系统RDBMS&…

matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...

引言:邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。【历史文章汇总】请点击此处【必读文章】:【邢不行|量化小讲堂系列27-Python量化入门】EOS期现套利&…

结对项目

一、【Coding.Net项目地址】https://git.coding.net/verde/Pair_Work.git 二、【对接口进行的设计】 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的。 如下图SRC的…

amd 安装 linux驱动怎么安装教程,请教,怎么在ubuntu里安装amd显卡驱动

AMD发布新版本时fglrx-updates驱动就会自动升级,但其实并不总是这样,因为Ubuntu的源的更新老是会有延迟。所以,你可以自己安装指定版本的专有驱动。准备开始吧,在终端敲入以下命令:sudo apt-get install build-essenti…

node.js中exports与module.exports的区别分析

前言 关于Node.js中的exports和module.exports,很多时候都比较容易让人混淆,弄不清楚两者间的区别。那么我们就从头开始理清这两者之间的关系。 来源 在开发Node.js应用的时候,很多模块都是需要引入才能使用,但是为什么exports…

Java反射教程

在本教程中,我主要编写一些示例来介绍Java反射可以做什么。 希望它可以给您这个概念的概述。 请留下您的评论以寻求建议。 什么是反射? 简而言之,反射是程序在运行时检查和修改对象的结构和行为的能力。 这种概念有时与内省混合在一起。 自…

NFS网络共享文件系统

1、nfs服务端配置操作 1.1 创建所需的共享目录--源 mkdir /data/rw #rw代表同步的数据可读可写 1.2 对共享目录进行授权 chown -R nfsnobody.nfsnobody /data/rw #非必需,根据业务需求 1.3 修改nfs服务配置文件 vim /etc/exports /data/rw 172.16.1.0/…

国家开放大学形成性考核 统一资料 参考试题

试卷代号:1174 水工钢筋混凝土结构(本)参考试题 一、选择题(每小题2分,共20分,在所列备选项中,选1项正确的或最好的作为答案,将选项号填入各题的括号中) 1.钢筋混凝土结…

两个向量之间的夹角公式_向量的内积

向量的内积也叫向量的数量积、点积。我们定义两个向量的内积是一个数: 其中 是这两个向量的夹角。 对于向量的内积,最重要的一个结论是: 定理1:两向量垂直的充分必要条件是它们的内积为 0,即 这个定理我们几乎不用证明了,因为从定义来看,如果两个向量都不零向量,则只能…

Go strings.Builder

Go strings.Builder 字符串拼接操作优化 最开始的时候,可能会使用如下的操作: package mainfunc main() {ss : []string{"sh","hn","test",}var str stringfor _, s : range ss {str s}print(str) }与许多支持string类型…

springcloud 入门 10 (eureka高可用)

eureka高可用: 说白了,就是加一个实例作为原实例的备份,然后一起对外提供服务。这样可以保证在一台机器宕机的时候,整个系统不会死掉。保证其继续对外服务。 eureka的集群化: 服务注册中心Eureka Server,是一个实例&am…