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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…