android Не разрешается загружать локальный ресурс: file: /// android_asset - PullRequest
13 голосов
/ 18 марта 2012

Я пытаюсь загрузить html-страницу с сервера, на которой есть скрипт, который ссылается на файл .js android sdcard.

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 Console (26189): запрещено загружать локальный ресурс: file:///sdcard/test.js at: 0

file: ///android_asset/www/js/test.js:

03-18 13:01: 53.467: E / Web Console (26189): не разрешается загружать локальный ресурс: файл: ///android_asset/www/js/test.js в: 0

Ответы [ 5 ]

13 голосов
/ 18 марта 2012

Это может помочь

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 голос
/ 21 марта 2015

, чтобы исправить это, создайте папку в «main» под названием «android_asset», а внутри папки android_asset создайте другую папку под названием «assets», поместите ваш html-файл в assets и вызовите с помощью этого mWebView.loadUrl («file: /// android_asset» / YOUR HTML FILE.html ");

У меня была такая же проблема, и хотя я не вызываю mWebView.loadUrl ("file: /// android_asset / assets / YOUR HTML FILE.html"); это еще кое-как работает. что я нахожу странным, потому что это где HTML на самом деле!

Итак, ваши папки должны выглядеть следующим образом: main / android_assets / assets / YOUR HTML.html и вызываться с помощью mWebView.loadUrl ("file: /// android_asset / YOUR HTML FILE.html");

Вот как выглядит мое творение.

открытый класс 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");

}
1 голос
/ 21 апреля 2014

Если вы получаете сообщение об ошибке «Не разрешено загружать локальный ресурс: file: ///android_asset/index.html», скорее всего, ваша проблема заключается в том, что вы помещаете папку активов в неправильное местоположение.

Для проекта Gradle храните ваши активыпапка в каталоге src / main / с помощью папок java и res.Например:

папка проекта - | имя_проекта
- | build
- | src
--- | assets
--- |gen
--- | java
--- | res

Для проектов maven храните свои активы в каталоге res /

0 голосов
/ 09 апреля 2018
 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", "");
      });
  }

Попробуйте следующий код для загрузки содержимого HTML с SDCard.

 String fileName = "something.html";
 File lFile = new File(Environment.getExternalStorageDirectory() + fileName);
 webview.loadUrl("file:///" + lFile.getAbsolutePath());
0 голосов
/ 18 марта 2012

попробуйте это:

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

но в вашей папке ресурсов должно быть одно имя www-> js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...