Я вставляю файл javascript в WebView, и этот файл javascript должен загружать больше файлов из папки ресурсов приложения. Раньше я загружал файлы с удаленного сервера, но теперь мне нужно загрузить их локально. Я получаю сообщение «Не разрешено загружать локальный ресурс». это вообще возможно? Я не могу найти решение здесь или с помощью Google. пример:
...
webView.loadUrl("javascript:(function() {" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var script = document.createElement('script');" +
"script.type = 'text/javascript';" +
"script.innerHTML = window.atob('" + encoded + "');" +
"parent.appendChild(script)" +
"})()");
это вводит файл "script.js" в веб-просмотр. внутри файла script.js я хочу вставить фоновое изображение css, которое находится внутри папки ресурсов приложения. когда я пытаюсь получить доступ к файлу: /// android_asset, я получаю ошибку «не разрешено загружать локальный ресурс».



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


если вы хотите загрузить свою локальную html-страницу и ресурсы в веб-представление, вы должны использовать webView.loadDataWithBaseURL
public void loadLocalHtmlToWebView() throws IOException {
WebView mWebView = findViewById(R.id.my_webview);
File publicDir = new File(getCacheDir(), "public");
if (publicDir.exists() == false) {
publicDir.mkdirs();
String[] ls = getAssets().list("public");
for (int i = 0; i < ls.length; i++) {
InputStream inputStream = getAssets().open("public/" + ls[i]);
File outFileLocation = new File(publicDir, ls[i]);
outFileLocation.createNewFile();
Log.e("AMIR", "Wrinting to : " + outFileLocation.getPath());
FileOutputStream fileOutputStream = new FileOutputStream(outFileLocation);
byte[] buffer = new byte[1024];
while (inputStream.read(buffer) != -1) {
fileOutputStream.write(buffer);
}
fileOutputStream.flush();
fileOutputStream.close();
inputStream.close();
}
}
String indexHtml = "";
BufferedReader bufferedReader=new BufferedReader(new FileReader(new File(publicDir,"index.html")));
String ln = "";
while((ln=bufferedReader.readLine())!=null){
indexHtml+=ln;
}
bufferedReader.close();
Log.e("AMIR","Html : "+indexHtml);
String baseUrl = "file://" + publicDir.getPath() + "/";
mWebView.loadDataWithBaseURL(baseUrl, indexHtml, "text/html", "UTF-8", null);
}
Папка с активами:
мой код index.html:
<html>
<head>
<title>Hello</title>
<head>
<body>
Hello
<img src = "./img.jpg"/>
<body>
</html>
и это хороший и хорошо объясненный учебник для webView:
http://tutorials.jenkov.com/android/android-web-apps-using-android-webview.html
спасибо, но я не смог заставить свой пример работать с вашим решением