写在前面的话

这个是一篇水博客,因为我知道只要是个大二的小朋友就可以搞定,我大二就一天在搞这些事情,今天纯属吃饱了撑着,想敲键盘,等实验结果然后随便写写。我知道大家都会的,不会的小朋友随便看看然后自己回去搞定吧 ^_^


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.minidomfor 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.minidomimport osMANIFST="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文件找MainActivity相关推荐

  1. PMS解析AndroidManifest.xml文件的过程

    一.前言 ​      前段时间在看当下主流的安卓插件化技术原理的时候,发现目前插件化技术对于四大组件的处理基本都是通过代理来实现的(动态注册的广播接收器除外).简单说就是需要先在主包里预埋一个注册在 ...

  2. xml的学习和使用python解析读取xml文件

    1. XML的介绍 XML 指可扩展标记语言(EXtensible Markup Language). 和json类似也是用于存储和传输数据,还可以用作配置文件. 类似于HTML超文本标记语言,但是H ...

  3. 【代码片段收集】Python解析AndroidManifest.xml

    写在前面的话 这个好像只适合我自己看,感觉有的代码片段复用率很高,总是反复需要用到.所以就整理一下,方便自己查找. # find the MainActivity and let the MainAc ...

  4. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  5. android基础知识13:AndroidManifest.xml文件解析【转载】

    注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  6. Android学习笔记之AndroidManifest.xml文件解析(学习别人的..非原创)

    AndroidManifest.xml是每个android程序中必须的文件.它位于application的根目录,描述了package中的全局数据,包括了package中暴露的组件(activitie ...

  7. AndroidManifest.xml文件的作用和简单使用

    当Android启动一个应用程序组件之前,它必须知道哪些个组件是存在的,所以开发人员在开发过程中,必须将应用程序中出现的组件一一在 AndroidManifest.xml文件中申明,最终这个Andro ...

  8. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  9. AndroidManifest.xml 文件详解

    AndroidManifest.xml 文件详解 AndroidManifest.xml 文件详解 概述 文件特性 包名和应用ID(application ID) 应用程序组件(App compone ...

最新文章

  1. java数独最快解_[分享]数独的JAVA解法
  2. [云炬创业管理笔记]第三章打造优秀创业团队讨论1
  3. CentOS系统更换yum源(repomd.xml not found解决方案)
  4. python:校验邮箱格式
  5. 后BERT时代:15个预训练模型对比分析与关键点探究
  6. linux下tomcat部署java web项目_求助帖 linux服务器 tomcat部署javaweb项目问题
  7. 简单好用的sshfs -- 通过ssh映射远程路径(转)
  8. 安全认证传输服务器介绍
  9. 微软开始取消 Windows 10 对 32 位系统的支持
  10. LINUX 查看系统信息的命令
  11. lombok几个基本注解的使用@Data @AllArgsConstructor @NoArgsConstructor @Builder
  12. jsp+ssh+mysql Java web学生考勤管理系统源码附视频指导运行教程
  13. java--GUI窗口可视化编程1
  14. win10设置计算机关机时间,Win10怎么设置自动关机时间_Win10设置自动关机教程-192路由网...
  15. 计算机软件类自然科学基金标书,国家自然科学基金标书撰写——体会6(转发仅供参考)...
  16. booster 框架学习(一)
  17. excel导出图片---HSSFWorkbook--SXSSFWorkbook
  18. 第九层(1):初识STL
  19. 分布式调度平台xxl-job的使用及其算法分析
  20. ssm毕设项目企业门户网站f24qk(java+VUE+Mybatis+Maven+Mysql+sprnig)

热门文章

  1. 微博并发这么牛逼!看他架构如何设计的?
  2. 9月8日凌晨,字节跳动全员收到邮件!因为这件事,所有人多发半个月工资!字节沸腾!网友酸了!...
  3. 面试官问一个数据表字段怎么表示多种业务含义?我愣了五分钟
  4. BAT集体告别中台上半场!接下来,中台怎么玩?
  5. JVM 从入门到“精通”,妥妥的
  6. 调用训练好的模型(tensorflow)
  7. ubuntu——python
  8. putchar函数的基本格式
  9. Ubuntu16.04下配置最新Vs Code的C/C++开发环境
  10. 56 Node.js服务端开发入门