由于工作需要,想获取所有应用的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
转载请声明出处。