Как в android studio загрузить файл изображения с компьютера в webView?

У меня есть webView в приложении, которая показывает сайт. На этом сайте есть кнопка загрузить изображение, которая должна открыть окно для выбора изображения из устройства. Но у меня при нажатии на эту кнопку ничего не происходит, хотя все остальные кнопки на сайте работают. Это проблема эмулятора или нужно что-то прописать чтобы приложение разрешило доступ к файлам на устройстве?


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

Автор решения: Yura Ivanov

WebView не имеет доступа к системе, все общение нужно организовывать самому, выбор файла, загрузку файлов, обработку вывода в консоль (если например хотите увидеть console.log из скриптов), и т.д. Делается это через WebChromeClient

В частности для выбора файла вам нужно самостоятельно реализовать открытие пикера файлов и открывать его при нажатии в WebView примерно так:

mWebView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onShowFileChooser(WebView webView,
                                         ValueCallback<Uri[]> filePathCallback,
                                         FileChooserParams fileChooserParams) {
             chooseFiles(filePathCallback, fileChooserParams);
        }
});

private void chooseFiles(ValueCallback<Uri[]> filePathCallback,
                         FileChooserParams fileChooserParams) {
     // вызываете пикер по результатам выбора отдаете полученные uri 
     // в filePathCallback.onReceiveValue(uris)
}
→ Ссылка