属性android:requireDeviceUnlock不执行其功能

时间:2015-07-17 12:03:37

标签: android hce

它是我在HCE应用程序中的文件apduservice.xml:

<?xml version="1.0" encoding="utf-8"?>

<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
                   android:requireDeviceUnlock="false">
    <aid-group android:category="other">
        <aid-filter android:name="00000000000401"/>
    </aid-group>
</host-apdu-service>

我还尝试在此文件中更改属性android:requireDeviceUnlock,如下所示:

android:requireDeviceUnlock="true"

并尝试运行没有此属性的应用程序

<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android">
        <aid-group android:category="other">
            <aid-filter android:name="F0405400400337"/>
        </aid-group>
    </host-apdu-service>

但没有改变。我的应用程序仅在显示器解锁时才有效,当显示器熄灭时,我的processCommandApdu方法没有命令。

来自文档:

  

requireDeviceUnlock属性可用于指定   必须先解锁设备,然后才能调用此服务进行处理   的APDU。

     

HCE服务可以在锁定屏幕上运行,但是:这是   由android:requireDeviceUnlock属性控制    您的HCE服务的标签。默认情况下,设备解锁   不是必需的,即使设备也会调用您的服务   被锁定了。

     

如果将android:requireDeviceUnlock属性设置为&#34; true&#34;对于   您的HCE服务,Android将提示用户解锁设备   当您点击NFC阅读器选择已解析的AID时   你的服务。解锁后,Android会显示一个对话框提示   用户再次点击以完成交易。这是必要的   因为用户可能已将设备从NFC读卡器移开   为了解锁它。

我做错了什么?请帮帮我!

1 个答案:

答案 0 :(得分:3)

Android HCE-Service仅在您的屏幕实际开启时才有效。

From the HostApduService Documentation

  

当设备的屏幕关闭时,当前的Android实施方案会完全关闭NFC控制器和应用程序处理器。因此,当屏幕关闭时,HCE服务将不起作用。   然而,HCE服务可以从锁定屏幕运行:这由您的HCE服务标签中的android:requireDeviceUnlock属性控制。默认情况下,不需要设备解锁,即使设备已锁定,也会调用您的服务。

如果屏幕 on 并且您的ApduService收到命令,则android:requireDevice属性仅询问锁屏。此外,用户必须设置锁屏。

我希望这会有所帮助