Столкнулся со следующей ситуацией. На стороне сервера на js написана логика: сканер QR кодов, который вызывается по нажатию на кнопку
<input type="file" accept="image/*" capture="camera" />
На стороне android, если зайти в браузер (Chrome), то по нажатию на кнопку все корректно работает, открывается камера, сканируется код и результат сканирования отображается на сайте.
При попытке сделать тоже самое в android приложении, используя WebView, кнопка не срабатывает и соответственно далее логика не выполняется.
Вопрос, как заставить WebView работать так же, как и браузер? Поддержка js в приложении включена, разрешения камере предоставлены. Нагуглилось решение только одно - на стороне android-приложения через js аннотации (интерфейс) мапить нажатие кнопки на сайте (WebView) с методом в классе java
WebView webView = (WebView) findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new MyJavaInterface(), "test");
private class MyJavaInterface {
@android.webkit.JavascriptInterface
public String getGreeting() {
return "Hello JavaScript!";
}
}
<input value="Click" onclick="javascript:alert(test.getGreeting());"/>
Cоответственно всю логику сканирования кодов и отправки на сервер нужно нативно переписывать в приложении, что не очень хочется.
Хотелось бы услышать мнение экспертов, заранее спасибо.