我们如何在AndroidManifest.xml使用python?

2024-06-16 14:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,所以这个问题可能太简单了。我在试着分析AndroidManifest.xml文件以查找主要活动。在

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.heartrateapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MonitorActivity" />
        <activity android:name=".SubmitActivity" />
    </application>

</manifest>

具有以下意图的活动是主要活动。在

^{pr2}$

Python解析器:

from xml.dom.minidom import parseString

  data = ''
  with open('AndroidManifest.xml','r') as f:
    data = f.read()
  dom = parseString(data)
  activities = dom.getElementsByTagName('activity')
  perms = dom.getElementsByTagName('uses-permission')

  for activity in activities:
    print activity.getAttribute('android:name')
    print activity.getElementsByTagName('intent-filter')
 for perm in perms:
    print perm.getAttribute('android:name')

如何找到主要活动?现在我用印刷品检查。我想创建一个对象来存储主要活动、意图、服务、权限。等等。有人能帮帮我吗?在


Tags: 文件namecomdataapplicationxmlactivityfilter
2条回答

这有助于找到主要活动。如何在类中添加而不是使用print?在

for activity in activities:
    print activity.getAttribute('android:name')
    intents = activity.getElementsByTagName('intent-filter')
    for intent in intents:
        actions = intent.getElementsByTagName('action')
        for action in actions:
            if  action.getAttribute('android:name') == 'android.intent.action.MAIN':
                print action.getAttribute('android:name')

如前所述,您正在查找包含<action android:name="android.intent.action.MAIN" />意向过滤器的活动。在

既然清单中应该只有一个,你可以在找到第一个的时候停下来。在

所以从你的示例和我对其他语言的了解来看,我希望你的代码看起来像

from xml.dom.minidom import parseString

  data = ''
  with open('AndroidManifest.xml','r') as f:
      data = f.read()
      dom = parseString(data)
      activities = dom.getElementsByTagName('activity')
      perms = dom.getElementsByTagName('uses-permission')

      mainactivity = None #or whatever python null is

      for activity in activities:
          filters = activity.getElementsByTagName('intent-filter')
          for intent in filters:
              if intent.getAttribute('android:name') == "android.intent.action.MAIN"
                  mainactivity = activity
                  break #end intent loop 
           if mainactivity
              break #end activity loop

      print mainactivity.getAttribute('android:name')

相关问题 更多 >