是否可以在运行时更改 Android <host-apdu-service> 属性 android:requireDeviceUnlock?

Is it possible to change Android <host-apdu-service> attribute android:requireDeviceUnlock at runtime?

Android NFC HCE HostApduService 通过 apduservice.xml 配置,其中包含:

<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/servicedesc"
    android:requireDeviceUnlock="true" >

    <aid-group
        android:category="other"
        android:description="@string/aiddescription" >
        <aid-filter android:name="F0010203040506" />
    </aid-group>

</host-apdu-service>

我想使 requireDeviceUnlock 成为用户可在运行时配置的设置。我怀疑我可以通过重新启动服务来强制重新加载 XML 文件:

stopService(new Intent(this, MyHostApduService.class));
startService(new Intent(this, MyHostApduService.class));

但是如何在运行时更改 XML 文件中的设置?

我实际上正在考虑实现相同的功能,即让用户偏好是否需要解锁设备。

然而看着 api

https://developer.android.com/reference/android/nfc/cardemulation/HostApduService.html

此时,似乎没有符合条件的调用来更改应用程序 apduservice.xml 文件中设置的 "requireDeviceUnlock" 值。

希望这会在未来有所改变。

然而,您可以将其设置为 false,然后在您的 apduservice 实现中检查 sharedpreference 设置以查看用户指定的内容,然后 accept/deny 从那里开始您的进程。