Android Не разрешено загружать локальный ресурс: файл:///android_asset

Я пытаюсь загрузить 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: электронная/веб-консоль (26189): не разрешено загружать локальный ресурс: файл:///sdcard/test.js в: 0

файл:///android_asset/www/js/test.js:

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


person explorer    schedule 18.03.2012    source источник


Ответы (5)


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

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

webview.loadDataWithBaseURL( "file:///android_asset/", html, "text/html", 
"utf-8", null ); 
person Sindre    schedule 18.03.2012
comment
спасибо за вашу помощь, но я хочу использовать loadUrl(), потому что я обнаружил, что loadDataWithBaseURL не поддерживает функцию локального хранилища HTML5, может быть, мне нужна какая-то другая конфигурация? - person explorer; 19.03.2012

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

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

папка-проекта -|имя_проекта
--|сборка
--|источник
---|активы
---|gen
---| Java
---|разрешение

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

person Defuera    schedule 21.04.2014

чтобы исправить это, создайте папку в «основной» с именем «android_asset», а внутри папки android_asset создайте другую папку с именем «assets», поместите свой html-файл в активы и вызовите, используя этот mWebView.loadUrl("file:///android_asset/ВАШ HTML ФАЙЛ.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");

Вот как выглядит мой 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");

}
person mark coultous    schedule 21.03.2015

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

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

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

person Dhruvisha    schedule 18.03.2012
comment
Ваш html-файл находится в папке с активами или на каком-то сервере? - person Dhruvisha; 21.03.2012
comment
@user1204703 user1204703 Я тоже сталкиваюсь с той же проблемой, я загружаю содержимое файла из SDCARD, веб-просмотр загружает содержимое, но с помощью JS и CSS. Как загрузить JS и CSS из SDCARD с помощью метода loadDataWithBaseURL(). - person sachin003; 23.04.2013

 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 с SD-карты.

 String fileName = "something.html";
 File lFile = new File(Environment.getExternalStorageDirectory() + fileName);
 webview.loadUrl("file:///" + lFile.getAbsolutePath());
person Naresh Palle    schedule 09.04.2018
comment
Это не ответ на вопрос. ОП спросил, как загрузить локальный ресурс из файла HTML, который сам был загружен с внешнего сервера. ОП не спросил, как загрузить файл HTML с SD-карты. - person Binarus; 09.04.2018