gpt4 book ai didi

javascript - 使用javascript文件访问android Assets 文件夹

转载 作者:行者123 更新时间:2023-11-29 02:30:12 26 4
gpt4 key购买 nike

我正在向 WebView 注入(inject)一个 javascript 文件,该 javascript 文件需要从应用 Assets 文件夹加载更多文件。我以前从远程服务器加载文件,但现在我需要在本地加载它们。我得到“不允许加载本地资源”。这甚至可能吗?我在这里或使用谷歌找不到任何解决方案。示例:

...
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”文件注入(inject)到 WebView 中。在 script.js 文件中,我想注入(inject)位于应用程序 Assets 文件夹内的 css 背景图像。当我尝试访问“file:///android_asset”时,出现“不允许加载本地资源”错误。

最佳答案

如果你想加载本地 html 页面和资源到 web View ,你应该使用 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);

}

Assets 文件夹:

Assets folder

我的 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

关于javascript - 使用javascript文件访问android Assets 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com