首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果sdk < Kitkat,则停止HCE

如果sdk < Kitkat,则停止HCE
EN

Stack Overflow用户
提问于 2014-07-15 16:03:31
回答 1查看 362关注 0票数 1

我有个奇怪的问题。我想知道如果设备sdk小于所需的Kitkat sdk,是否可以阻止hce功能/服务?目前,我在应用程序启动时停止了HCe服务,但我不确定这样做是否正确

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2014-07-24 19:57:43

如果您的Android版本不支持HCE /使用您的HCE服务,则没有理由在小于19的平台上停止您的HCE服务,它甚至不会在一开始就生成启动服务组件的事件。

您的服务是通过清单中类似如下的部分向系统注册的:

代码语言:javascript
复制
<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之前的平台既不知道该意图,也不知道该权限,它不会导致您的服务启动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24752939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档