web-dev-qa-db-fra.com

android Non autorisé à charger la ressource locale: file: /// Android_asset

J'essaie de charger une page html à partir d'un serveur car la page contient un script qui renvoie au fichier sdcard .js Android.

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>

J'ai aussi essayé:

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

le fichier test.js existe et le chemin du fichier js est correct. Mais dans logcat: fichier: ///sdcard/test.js:

03-18 13: 01: 12.467: Console E/Web (26189): impossible de charger la ressource locale: fichier: ///sdcard/test.js à: 0

fichier: ///Android_asset/www/js/test.js:

03-18 13: 01: 53.467: Console E/Web (26189): impossible de charger la ressource locale: fichier: ///Android_asset/www/js/test.js à: 0

13
kim

Cela peut aider

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

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

Si vous obtenez une erreur "Non autorisé à charger la ressource locale: fichier: ///Android_asset/index.html", le problème est probablement que le dossier des ressources est mal placé.

Pour chaque projet, stockez votre dossier d’actifs dans le répertoire src/main/avec les dossiers Java et res. Comme ça:

dossier-projet - | nom_projet
- | build
- | src
--- | actifs
--- | gen
--- | Java
--- | res

Pour le projet maven, stockez vos actifs dans le répertoire res /

1
Defuera

pour résoudre ce problème, créez un dossier dans "principal" appelé "Android_asset" et à l'intérieur du dossier Android_asset, créez un autre dossier appelé "assets", placez votre fichier html dans des assets et appelez-le à l'aide de ce mWebView.loadUrl ("file: /// Android_asset/YOUR HTML FILE.html ");

J'ai eu le même problème et même si je n'appelle pas mWebView.loadUrl ("fichier: /// Android_asset/assets/VOTRE FICHIER HTML.html"); ça reste un peu comment ça marche. que je trouve étrange parce que c'est là que le HTML est réellement!

Encore une fois, vos dossiers doivent ressembler à ceci/Android_assets/assets/YOUR HTML.html et appeler avec mWebView.loadUrl ("fichier: /// Android_asset/YOUR HTML FILE.html");

Voici comment mon oncreate ressemble.

classe publique MainActivity étend 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
mark coultous

essaye ça :

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

mais il devrait y avoir un nom de dossier www-> js dans votre dossier assets.

0
Dhruvisha
 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", "");
      });
  }

Essayez le code suivant pour charger le contenu HTML à partir de sdcard.

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