android不允许加载本地资源:file:/// android_asset

时间:2012-03-18 13:35:53

标签: android cordova android-webview

我正在尝试从服务器加载一个html页面,该页面包含一个链接到android sdcard .js文件的脚本。

爪哇:

String url ="http://192.168.84.86:8080/test/maw/js_load_test.html";
this.loadUrl(url);

js_load_test.html:

<script src="file:///sdcard/test.js"></script>

我也试过了:

<script src="file:///android_asset/www/js/test.js"></script>

test.js文件存在且js文件路径正确。 但是在logcat中: 文件:///sdcard/test.js:

  

03-18 13:01:12.467:E / Web Console(26189):不允许加载本地   resource:file:///sdcard/test.js at:0

文件:///android_asset/www/js/test.js:

  

03-18 13:01:53.467:E / Web Console(26189):不允许加载本地   资源:file:///android_asset/www/js/test.js at:0

5 个答案:

答案 0 :(得分:13)

这可能会有所帮助

https://groups.google.com/group/android-developers/browse_thread/thread/e20e87d2faf9ff41?pli=1#

webview.loadDataWithBaseURL( "file:///android_asset/", html, "text/html", 
"utf-8", null ); 

答案 1 :(得分:1)

如果你得到&#34;不允许加载本地资源:file:///android_asset/index.html"错误很可能是你的问题是将资源文件夹放在错误的位置。

对于gradle项目,由java和res文件夹存储src / main /目录下的assets文件夹。像这样:

项目文件夹 - | PROJECT_NAME
- |构建
- | SRC
--- |的资产
--- |根
--- | java的
--- | RES

对于maven项目商店,你在res /目录下的资产

答案 2 :(得分:1)

要解决此问题,请在&#34; main&#34;中创建一个文件夹。叫&#34; android_asset&#34;并在android_asset文件夹中创建另一个名为&#34; assets&#34;的文件夹。并将您的html文件放在资源中并使用此mWebView.loadUrl调用(&#34;文件:/// android_asset /您的HTML FILE.html&#34;);

我遇到了同样的问题,即使我没有调用mWebView.loadUrl(&#34; file:/// android_asset / assets / YOUR HTML FILE.html&#34;);它仍然有一些工作原理。我发现这很奇怪,因为html实际上就是这样!

所以你的文件夹应该看起来像这个main / android_assets / assets /你的HTML.html并用mWebView.loadUrl调用(&#34;文件:/// android_asset /你的HTML FILE.html&#34;); < / p>

这是我的oncreate看起来如何。

公共类MainActivity扩展了ActionBarActivity {

private WebView mWebView;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    // Enable Javascript
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.loadUrl("file:///android_asset/index.html");

}

答案 3 :(得分:0)

试试这个:

this.loadUrl("file:///android_asset/www/js/test.js");

但资源文件夹中应该有一个文件夹名称www-&gt; js。

答案 4 :(得分:0)

 String htmlStr="<html>..your html data in string..\"data/replace.js\" </html>";
 if (htmlStr.contains("\"data/replace.js\"")) {
     String html = data.replace("\"data/replace.js\"", "\"file:///storage/emulated/0/documents/HtmlContent/new_replace.js\"");
     ((Activity) mContext).runOnUiThread(() -> {
            loadDataWithBaseURL("file:///storage/emulated/0/documents/HtmlContent/", html, "text/html", "UTF-8", "");
      });
  }

尝试使用以下代码从sdcard加载Html内容。

 String fileName = "something.html";
 File lFile = new File(Environment.getExternalStorageDirectory() + fileName);
 webview.loadUrl("file:///" + lFile.getAbsolutePath());