List of OMAPI supported devices

2019-02-15 02:20发布

I'm developing with the Open Mobile API but so far haven't found a list of devices that support the API by default (by default being using the OEM ROM).

I realise that since API level 21, Android telephony supports sending APDUs via basic and logical channels dirctly through the TelephonyManager. But I'd like to know about devices running pre-API level 21 too.

So, has a list already been compiled of devices with built-in support or is there a way to find out for myself?

2条回答
Lonely孤独者°
2楼-- · 2019-02-15 02:37

While @Michael Roland response still stands, it's also worth noting that since Android 9 Pie, Open Mobile API is part of the Android.

So for API level 28 and higher, every phone has OMAPI by default and there is no need for explicit check.

查看更多
Summer. ? 凉城
3楼-- · 2019-02-15 02:55

I'm not aware of any complete list. However, there is a not so comprehensive one in our report Open Mobile API: Accessing the UICC on Android Devices and there is another one (though now unmaintained) in the SEEK-for-Android Wiki.

If you have access to each of the devices you are interested in, you could, of cource, check if the smartcard system service is available on them:

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
}

Or you could simply create an app that declares to require the Open Mobile API library by adding the following uses-library entry to its AndroidManifest.xml:

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

If that app can be installed on a device, this indicates that the device contains the Open Mobile API library.

This may also be a way to obtain a more comprehensive list of supported devices: You could create such an app and publish it on Google Play. Google Play will filter based on <uses-library /> entries that have the required attribute set to true (android:required="true"); see also <uses-library> and Filters on Google Play. This means, that once you uploaded such an app to Google Play, you should be able to get a list of suuported devices that essentially matches all devices that have the Open Mobile API library available on them.

查看更多
登录 后发表回答