用Python解析AndroidManifest.xml文件找MainActivity
2016-10-17 23:46
471 查看
写在前面的话
这个是一篇水博客,因为我知道只要是个大二的小朋友就可以搞定,我大二就一天在搞这些事情,今天纯属吃饱了撑着,想敲键盘,等实验结果然后随便写写。我知道大家都会的,不会的小朋友随便看看然后自己回去搞定吧 ^_^1.基本概念
什么是MainActivity,就是一个Android的APP 如果它有Activity的话,那么最开始启动的那个Activity就是MainActivity。每一个组件,包括Activity都必须要在AndroidManifest.xml文件中申明。
如果是MainActivity的话,那么就会有下面这两个特征:
我们随便找了两个APP的AndroidManifest.xml文件看一看
<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter>
在MainActivity下面都会声明一个有intent启动这个Activity的通知,这个intent传递的消息是由我们的系统发出的。这两个缺一不可,第一个action 说明这是第一个启动的Activity的,
没有了 category android:name=”android.intent.category.LAUNCHER”这个选项就找不到启动的界面。
所以我们要在一堆Activity里面找谁是MainActivity,只需要遍历一下XML文件,然后找到这两个特征我们就可以知道谁是MainActivity。
Python中已经提供很多强大的轮子(模块,库)来帮我们解析XML文件,现在我们就用这些轮子找到我们的MainActivity。
import xml.dom.minidom for act in actList: if act.toxml().find("android.intent.action.MAIN")>0 \ and act.toxml().find("android.intent.category.LAUNCHER")>0: print act.getAttribute("android:name") break
找到就会返回一个大于0的数,否则就是-1
搞定
2. 代码区
思路差不多讲完了,现在我们开始撸代码了。#!/usr/bin/env python # coding=utf-8 # date : 2016-10-12 # author : Chicho # function : 1.parse the AndroidManifest.xml file # 2.get the main activity from the manifest file # 我们用dom来解析xml文件,dom是把这个xml文件按照树的形式保存在内存中 # 加载的时候真个加载进去,所以占内存,效率不高 #但是我喜欢用dom因为简单容易理解 from xml.dom.minidom import parse import xml.dom.minidom import os MANIFST="AndroidManifest.xml" apkPath="/home/chicho/tools/apktool/apk/" manifestFilePath = os.path.join(apkPath,MANIFST) #这个存放的是AndroidManifest.xml文件 packageName="" #加载真个文件到内存 dom=xml.dom.minidom.parse(manifestFilePath) #得到根元素<manifest> Element # <tag attribut><-这样形式的是一个Element root=dom.documentElement #得到包名 package=root.getAttribute('package') #得到所有的Activity,存放在一个List中 activityList = root.getElementsByTagName('activity') MainActivity="" actCnt=len(activityList) # the number of activity # find the MainActivity and let the MainActivity become the first element in the list for activity in activityList: if activity.toxml().find("android.intent.action.MAIN")>0 \ and activity.toxml().find("android.intent.category.LAUNCHER")>0: MainActivity=activity.getAttribute('android:name') print MainActivity
这样我们就可以得到我们的MainActivity了。
写在后面的话
哈哈哈,每天都过得非常幸福,非常开心
因为我每天都在变得越来越好,越来越努力,吼吼~~
就是那句话:
越努力越幸福
因为太专注了,所以没有什么事情能够使我分心
因为太认真所以会很静心
因为很静心,所以每天都在进步,我喜欢我现在的生活
相关文章推荐
- python解析AndroidManifest.xml文件
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- [Android] AndroidManifest.xml文件解析
- Android配置文件Manifest.xml如何被加载、解析的
- AndroidManifest.xml文件解析
- Android中的AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- 批量解析apk的AndroidManifest.xml获得Pagename(Python)
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析(2)
- Android之AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- Android AndroidManifest.xml文件解析
- AndroidManifest.xml配置文件解析
- AndroidManifest.xml文件解析