OMAPI支持的设备列表

时间:2016-07-29 11:24:42

标签: android nfc apdu open-mobile-api secure-element

我正在使用Open Mobile API进行开发,但到目前为止还没有找到默认支持API的设备列表(默认使用OEM ROM)。

我意识到自API级别21以来,Android电话支持通过TelephonyManager直接通过基本和逻辑通道发送APDU。但我也想了解运行API级别21之前的设备。

那么,是否已经编制了一个内置支持设备的列表,或者有找到自己的方法吗?

2 个答案:

答案 0 :(得分:4)

我不知道有任何完整的清单。但是,我们的报告中Open Mobile API: Accessing the UICC on Android Devices并不是那么全面,SEEK-for-Android Wiki中还有另一个(虽然现在没有维护)。

如果您有权访问您感兴趣的每个设备,您可以通过cource检查智能卡系统服务是否可用:

final String SMARTCARD_SERVICE_PACKAGE = "org.simalliance.openmobileapi.service";
try {
    PackageInfo pi = getPackageManager().getPackageInfo(SMARTCARD_SERVICE_PACKAGE, 0);
    // smartcard service present
} catch (PackageManager.NameNotFoundException ex) {
    // smartcard service NOT present
}

或者您可以通过向AndroidManifest.xml添加以下uses-library条目来创建一个声明需要Open Mobile API库的应用程序:

<uses-library android:name="org.simalliance.openmobileapi" android:required="true" />

如果该应用可以安装在设备上,则表示该设备包含Open Mobile API库。

这也可能是获取更全面的受支持设备列表的一种方法:您可以创建此类应用并将其发布到Google Play上。 Google Play会根据<uses-library />条目进行过滤,其中所需的属性设置为trueandroid:required="true");另请参阅<uses-library>Filters on Google Play。这意味着,一旦您将此类应用程序上传到Google Play,您就应该能够获得一个基本匹配所有可在其上使用Open Mobile API库的设备的设备列表。

答案 1 :(得分:3)

尽管@Michael Roland的回复仍然有效,但从Android 9 Pie, Open Mobile API is part of the Android开始,这一点也值得注意。

因此对于API级别28或更高版本,每个电话默认情况下都具有OMAPI,因此无需进行显式检查。