Доступ к NFC через Andoid WebView

Пытаюсь реализовать работу web приложения на webview Android. Возникла проблема при попытке сканировать NFC метки через телефон из этого самого web-приложения. Выкидывает ошибку с текстом: "Error, scan failed to start. NotAllowedError: NFC permission request denied." внутри WebView. Уверен, что приложение имеет необходимые разрешения.

В манифесте запрос необходимых разрешений прописал:

<uses-permission android:name="android.permission.NFC" />

Тестировал на данной странице, из браузера работает https://nu-book.github.io/test-form-generator/mod-nfc.html

Подскажите пожалуйста, как можно передать доступ к NFC для WebView, если это возможно.


Ответы (1 шт):

Автор решения: Ilnar

Возможно это связано с необходимостью разрешения в самом браузере. Попробуйте добавить след код.

      webview.setWebChromeClient(new WebChromeClient() {  
             @Override
              public void onPermissionRequest(final PermissionRequest request) {
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                              request.grant(request.getResources());
                      }
               }
         });

Судя по документации данный метод NDEFReader.scan не поддерживается в WebView Android.

Возможно, не в тему, но как вариант можно рассмотреть следующий вариант. В нашем приложении мы использовали JavascriptInterface для обмена данными между WebView и нативов. И через JavascriptInterface Web страница запускала чтение данных через NFC и получала данные через обратный вызов JS методов.

→ Ссылка