Можно ли изменить атрибут Android android: requireDeviceUnlock во время выполнения?


AndroidNFC 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-файле во время выполнения?

1 4

1 ответ:

На самом деле я рассматривал реализацию этой же функциональности, то есть создание пользовательского предпочтения, требующего разблокировки устройства или нет.

Однако, глядя на api

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

На данный момент времени, похоже, нет подходящего вызова для изменения значения "requireDeviceUnlock", установленного в apduservice приложений.XML-файл.

Надеюсь, что это изменится в будущем. будущее.

Однако можно установить значение false, а затем в реализации apduservice проверить параметр sharedpreference, чтобы увидеть, что пользователь указал, а затем принять/отклонить ваш процесс оттуда.