Chargement de jQuery à partir d’actifs locaux dans Android pour une page html distante

J’essaie de lire un fichier javascript local (jQuery) stocké dans des ressources à partir d’une vue Web Android. Je ne veux pas charger avec url de base car mes images et html sont servis à distance.

Pour résumer: – Chargez jQuery local (dans le dossier des actifs) dans une page chargée à distance dans la vue Web Android.

Après de longues heures de navigation en vain, j’ai décidé de poser cette question ici. S’il vous plaît aider.

Merci!

  1. Définissez une interface Javascript comme celle ci-dessous qui lira votre fichier jQuery à partir du répertoire assets

    class JavaScriptInterface { @JavascriptInterface public Ssortingng getFileContents(){ return readAssetsContent("jquery.js"); } } 
  2. Mettez à jour WebView pour activer JavaScript et pour append JavaScriptInterface définie précédemment …

     webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new JavaScriptInterface(), "android"); 
  3. Ajoutez un extrait de code javascript dans votre code HTML distant pour lire le contenu du fichier jquery via l’interface JavaScript android …

      

Tout d’abord , dans votre activité, créez la variable statique appContext , qui contient le contexte d’application et la fonction ci-dessous:

  //Initialize Application Context private static Context appContext; //Get Application Context (for use in external functions) public static Context getContext() { return appContext; } 

… et définissez la variable dans onCreate(Bundle savedInstanceState) :

  //Set application context (for use in external functions) appContext = this; 

Deuxièmement , créez la classe dans un fichier séparé ci-dessous:

Fichier: JavaScriptInterface.java

 import android.content.Context; import android.util.Log; import android.webkit.JavascriptInterface; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; class JavaScriptInterface { @JavascriptInterface public Ssortingng getFileContents(Ssortingng assetName){ return readAssetsContent(MainActivity.getContext(), assetName); } //Read resources from "assets" folder in ssortingng public Ssortingng readAssetsContent(Context context, Ssortingng name) { BufferedReader in = null; try { SsortingngBuilder buf = new SsortingngBuilder(); InputStream is = context.getAssets().open(name); in = new BufferedReader(new InputStreamReader(is)); Ssortingng str; boolean isFirst = true; while ( (str = in.readLine()) != null ) { if (isFirst) isFirst = false; else buf.append('\n'); buf.append(str); } return buf.toSsortingng(); } catch (IOException e) { Log.e("error", "Error opening asset " + name); } finally { if (in != null) { try { in.close(); } catch (IOException e) { Log.e("error", "Error closing asset " + name); } } } return null; } } 

Troisièmement , n’oubliez pas d’initialiser votre vue Web pour utiliser JavaScriptInterface:

  //Set JS interface from JS/HTML code execution mWebView.addJavascriptInterface(new JavaScriptInterface(), "android"); 

Quasortingèmement , appelez la méthode Android getFileContents() pour charger les ressources locales dans votre code HTML avec JavaScript:

   

Remarque: la ressource locale dans cet exemple se trouve dans /assets/js/ sous-dossier.

Dans ma page html, je viens d’append un tag comme celui-ci.

     

Lorsque vous chargez votre URL, tous les fichiers js seront automatiquement chargés. Je pense que c’est vous aider.