Intereting Posts
Обновление / изменение кэшированного растрового изображения с использованием Picasso и OkHttp Как преобразовать 16-битный бит байтового массива PCM в двойной или плавающий массив? Java.lang.IllegalStateException: не удается найти метод onClick для кнопки в Android Studio Многоградиентные формы Recyclerview Изменение элементов во время прокрутки Android: невозможно уничтожить активность Вызовы в RecyclerView для Android L Как найти слова Strings.xml в Android Studio? Присоединение к жизненному циклу фрагмента, например Application.ActivityLifecycleCallbacks Как показать combobox в Android? Разрешение камеры для Android Неоткрытое исключение, созданное финализатором: ошибка API Google или ошибка ядра Samsung? Предназначение для редактирования текстового файла с установленным редактором файлов (если есть) Дополнительное дополнение в TextView с содержимым HTML Имитация кнопки питания для отображения диалогового окна выключения

Загрузка jQuery из локальных активов в Android для удаленной html-страницы

Я пытаюсь прочитать локальный файл javascript (jQuery), хранящийся в активах, с веб-просмотра Android. Я не хочу загружать-с-базовым url, так как мои изображения и html подаются удаленно.

Чтобы суммировать: – Загрузите локальный jQuery (в папку с ресурсами) на удаленную страницу в веб-браузере Android.

После долгих часов просмотра тщетно, я решил задать этот вопрос здесь. Пожалуйста помоги.

Благодаря!

Solutions Collecting From Web of "Загрузка jQuery из локальных активов в Android для удаленной html-страницы"

  1. Определите интерфейс Javascript, подобный приведенному ниже, который будет читать ваш файл jquery из каталога ресурсов

    class JavaScriptInterface { @JavascriptInterface public String getFileContents(){ return readAssetsContent("jquery.js"); } } 
  2. Обновите WebView, чтобы включить JavaScript и добавить JavaScriptInterface, определенные ранее …

     webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new JavaScriptInterface(), "android"); 
  3. Добавьте фрагмент кода javascript в удаленном HTML, чтобы прочитать содержимое файла jquery через интерфейс JavaScript для Android …

     <script type="text/javascript"> var s = document.createElement('script'); s.innerHTML = window.android.getFileContents(); document.head.appendChild(s); //check if jquery is loaded now... if(typeof $ != "undefined") { $(document).ready(function() { $('body').css('background','green'); }); } else { document.body.innerText = "jQuery NOT loaded"; } </script> 

Во-первых , в своей деятельности создайте статическую переменную appContext , которая содержит контекст и функцию приложения ниже:

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

… и установите переменную в onCreate(Bundle savedInstanceState) :

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

Во-вторых , создайте класс в отдельном файле ниже:

Файл: 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 String getFileContents(String assetName){ return readAssetsContent(MainActivity.getContext(), assetName); } //Read resources from "assets" folder in string public String readAssetsContent(Context context, String name) { BufferedReader in = null; try { StringBuilder buf = new StringBuilder(); InputStream is = context.getAssets().open(name); in = new BufferedReader(new InputStreamReader(is)); String str; boolean isFirst = true; while ( (str = in.readLine()) != null ) { if (isFirst) isFirst = false; else buf.append('\n'); buf.append(str); } return buf.toString(); } 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; } } 

В-третьих , не забудьте инициализировать свой Webview для использования JavaScriptInterface:

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

В-четвертых , вызовите метод android getFileContents() для загрузки локальных ресурсов в HTML с помощью JavaScript:

  <script type="text/javascript"> var s = document.createElement('script'); s.innerHTML = window.android.getFileContents('js/jquery.min.js'); document.head.appendChild(s); //check if jquery is loaded now... if(typeof $ != "undefined") { $(document).ready(function() { alert("jQuery is loaded!"); }); } else { alert("jQuery is NOT loaded!"); } </script> 

Примечание: локальный ресурс в этом примере находится в /assets/js/ sub-folder.

На моей странице html я добавил только тег.

 <script type="text/javascript" src="file:///android_asset/jquery.js"></script> <script type="text/javascript" src="file:///android_asset/englArrIni.js"></script> <script type="text/javascript" src="file:///android_asset/point.js"></script> <script type="text/javascript" src="file:///android_asset/dataManager.js"></script> 

Когда вы загружаете URL-адрес, который будет автоматически загружать все файлы js. Я думаю, это поможет вам.