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

时间:2014-05-07 15:26:43

标签: android android-service nfc apdu hce

我正在搜索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操作系统何时何地读取辅助过滤器并注册ID?

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

1 个答案:

答案 0 :(得分:6)

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

每当添加,更改,更新,删除应用程序包等时,都会收集和更新有关主机和脱离主机APDU服务(基于HCE和基于SE的CE)的信息。这由{{3中的广播接收器处理}}。广播接收器对以下事件很敏感:

  • 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服务时都会更新AID。

生成服务列表的方式和位置

在更新期间,系统为com.android.nfc.cardemulation.RegisteredServicesCache,以获取针对目标操作android.nfc.cardemulation.action.HOST_APDU_SERVICEandroid.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE进行过滤的服务列表。对于每个服务,检查应用程序是否拥有使用NFC的权限以及服务是否需要BIND_NFC_SERVICE权限。如果是这种情况,则会考虑将服务用于卡片仿真。

如何以及在何处提取AID列表?

然后,主机和脱离主机的APDU服务存储在queried个对象的列表中。该类andoid.nfc.cardemulation.ApduServiceInfo constructor<service>标记和processes AID列表中指定的元数据。

使用新列表更新了卡片仿真系统的方式和位置?

编译完成后,会将其传递给extracts。在那里,服务和AID列表用于编译主机上和主机外AID路由的路由表。