如何在操作系统中注册Android应用程序

4
我正在搜索Android源代码,因为我想了解应用程序的AndroidManifest.xml何时被解析。
例如,如果一个应用程序注册了NFC服务。
<service
        android:name=".demo.service.ApduService"
        android:exported="true"
        android:permission="android.permission.BIND_NFC_SERVICE">

        <intent-filter>
            <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
        </intent-filter>

        <meta-data
            android:name="android.nfc.cardemulation.host_apdu_service"
            android:resource="@xml/apduservice" />
    </service>

使用下面的apduservice.xml文件:
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/servicedesc"
android:requireDeviceUnlock="false" >

<aid-group
    android:category="other"
    android:description="@string/aiddescription" >
    <aid-filter android:name="23498234098234098" />
</aid-group>

Android操作系统何时何地读取aid-filter并注册ID?

(我知道它将被存储在哪里以及如何存储,但我找不到实际ID被提取并转发到NFC堆栈的事件)

1个回答

6

主机和非主机CE服务列表何时更新?

有关主机和非主机APDU服务(基于HCE和SE的CE)的信息在添加、更改、更新、删除应用程序包等情况下收集并更新。这由com.android.nfc.cardemulation.RegisteredServicesCache中的广播接收器处理。广播接收器对以下事件敏感:

  • ACTION_PACKAGE_ADDED
  • ACTION_PACKAGE_CHANGED
  • ACTION_PACKAGE_REMOVED
  • ACTION_PACKAGE_REPLACED
  • ACTION_PACKAGE_FIRST_LAUNCH
  • ACTION_PACKAGE_RESTARTED
  • ACTION_EXTERNAL_APPLICATIONS_AVAILABLE
  • ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE

此外,每次启用NFC服务时都会更新AIDs。

服务列表是如何生成的?在哪里生成?

在更新期间,系统会查询服务列表,该列表过滤意图操作android.nfc.cardemulation.action.HOST_APDU_SERVICEandroid.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE。对于每个服务,将检查应用程序是否具有使用NFC的权限以及服务是否需要BIND_NFC_SERVICE权限。如果是这种情况,则考虑用于卡模拟的服务。 如何提取AID列表以及提取的位置? 然后,主机和非主机APDU服务存储在andoid.nfc.cardemulation.ApduServiceInfo对象列表中。该类的构造函数处理<service>标签中指定的元数据,并提取AID列表。 新列表是如何更新到卡模拟系统中的?

在列表编译完成后,它会被传递到com.android.nfc.cardemulation.RegisteredAidCache。在那里,服务和AID的列表被用于编译主机内和主机外AID路由的路由表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接