我有个奇怪的问题。我想知道如果设备sdk小于所需的Kitkat sdk,是否可以阻止hce功能/服务?目前,我在应用程序启动时停止了HCe服务,但我不确定这样做是否正确
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT){
//Disable Hce service if sdk < 19
Intent intent = new Intent();
intent.setComponent(new ComponentName("at.ventopay.mocca.hce_service", "at.ventopay.mocca.hce_service.MyHostApduService"));
stopService(intent);
}它就像一个护身符,但我只是不相信我应该这样做。我现在的问题是:如果device sdk错误,我是否可以阻止HCE功能,或者如果我使用HCE,我的设备是否需要>=Kitkat?
发布于 2014-07-24 19:57:43
如果您的Android版本不支持HCE /使用您的HCE服务,则没有理由在小于19的平台上停止您的HCE服务,它甚至不会在一开始就生成启动服务组件的事件。
您的服务是通过清单中类似如下的部分向系统注册的:
<service android:name="..." android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>因此,服务只能通过使用意图操作android.nfc.cardemulation.action.HOST_APDU_SERVICE (或使用您的服务组件的explcit意图)绑定到它来启动。此外,只有拥有权限android.permission.BIND_NFC_SERVICE的应用程序才能执行此操作。
由于Kitkat之前的平台既不知道该意图,也不知道该权限,它不会导致您的服务启动。
https://stackoverflow.com/questions/24752939
复制相似问题