簡體   English   中英

android不允許加載本地資源:file:/// android_asset

[英]android Not allowed to load local resource:file:///android_asset

我正在嘗試從服務器加載一個html頁面,該頁面包含一個鏈接到android sdcard .js文件的腳本。

Java的:

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:file:///sdcard/test.js:

03-18 13:01:12.467:E / Web控制台(26189):不允許加載本地資源: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

這可能有所幫助

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

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

如果您收到“不允許加載本地資源:file:///android_asset/index.html”錯誤,則很可能是您的問題是將資源文件夾放在錯誤的位置。

對於gradle項目,由java和res文件夾存儲src / main /目錄下的assets文件夾。 像這樣:

project-folder - | project_name
- |編譯
- | SRC
--- | 資產
--- |根
--- | java的
--- |資源

對於maven項目商店,您在res /目錄下擁有資產

要解決此問題,請在“main”中創建一個名為“android_asset”的文件夾,並在android_asset文件夾中創建另一個名為“assets”的文件夾,並將您的html文件放入資源並使用此mWebView.loadUrl進行調用(“file:/// android_asset / YOUR HTML FILE.html“);

我有同樣的問題,即使我不調用mWebView.loadUrl(“file:/// android_asset / assets / YOUR HTML FILE.html”); 它仍然有一些工作原理。 我覺得很奇怪,因為html實際上就是這樣!

所以你的文件夾應該看起來像這個main / android_assets / assets /你的HTML.html並使用mWebView.loadUrl調用(“file:/// android_asset / YOUR HTML FILE.html”);

這是我的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");

}
 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());

試試這個 :

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

但是在您的資源文件夾中應該有一個文件夾名稱www-> js。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM