OMAPI 支持的设备列表

List of OMAPI supported devices

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

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

那么,是否已经编制了一份包含内置支持的设备列表,或者有没有办法自己找出来?

我不知道有任何完整列表。但是,我们的报告中有一个不太全面的 Open Mobile API: Accessing the UICC on Android Devices and there is another one (though now unmaintained) in the SEEK-for-Android Wiki

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

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
}

或者您可以简单地创建一个声明需要 Open Mobile API 库的应用程序,方法是将以下 uses-library 条目添加到其 AndroidManifest.xml:

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

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

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

虽然@Michael Roland 的回应仍然有效,但值得注意的是自 Android 9 Pie, Open Mobile API is part of the Android

因此对于API 28级及更高级别,每个phone默认都有OMAPI并且不需要显式检查。