我想创建基于 Android Kitkat 4.4 的 NFC 支付应用程序,该应用程序现在支持 NFC 卡模拟模式,既不涉及安全元素,也涉及安全元素。
我想让我的应用程序涉及一个安全元素。所以,我有一个问题。Android KitKat 可以让我的应用程序访问安装在安全元件中的 java 卡小程序吗?
我想创建基于 Android Kitkat 4.4 的 NFC 支付应用程序,该应用程序现在支持 NFC 卡模拟模式,既不涉及安全元素,也涉及安全元素。
我想让我的应用程序涉及一个安全元素。所以,我有一个问题。Android KitKat 可以让我的应用程序访问安装在安全元件中的 java 卡小程序吗?
如果使用安全元件是指 SIM 卡或手机中的专用芯片,答案是否定的:Android 仍然不包含访问安全元件的 API。钱包等应用程序使用以下两种方法之一:
这两种 API 通常都遵循 SIM 联盟的“Open Mobile API”,http://www.simalliance.org/en/about/workgroups/open_mobile_api_working_group/
不可以,虽然 Android HCE 文档列出了使用基于安全元素的卡模拟的可能性,但有几个问题阻碍了在当前设备中使用安全元素:
Nexus 设备具有仅用于访问嵌入式安全元素的专有 API(似乎没有用于访问基于 UICC/SIM 卡的安全元素的 API)。但是,较新的 Nexus 设备似乎不再包含嵌入式 SE。此外,只有谷歌(可能还有销售这些设备的移动网络运营商)能够使用访问 SE API 的权限。(否则,您需要 root 权限才能将您的应用证书添加到允许的应用列表中。)
Nexus 设备似乎根本没有启用 UICC 进行卡仿真。因此,即使您注册了脱离主机卡仿真的应用程序,UICC 也无法在此类设备上使用。
许多其他(非 Nexus 设备)提供基于 Open Mobile API(通常是 SEEK-for-Android 实现或基于它的东西)的安全元素 API。这些设备似乎主要使用该 API 来访问基于 UICC/SIM 卡的安全元素。(目前还没有与Android 4.4的off-host卡仿真服务注册交互的信息。)
您需要访问安全元素(即您需要知道在 SE 上安装/管理应用程序的密钥)。这是您通常得不到的东西,除非您与设备制造商(对于嵌入式安全元件)或移动网络运营商(对于基于 UICC/SIM 卡的安全元件)有良好的合作。
Android P 具有 Open Mobile API 的一个版本:https ://developer.android.com/reference/android/se/omapi/package-summary