Intereting Posts
Android Studio 0.5.0 rebuild не работает с Proguard Тестирование неактивных классов в Android Как разработать пользовательскую Soft Keyboard для Android-приложения? Символ хинди не будет отображаться в веб-представлении правильно Как реализовать галерею SD-карт без настройки в android? Вернитесь к предыдущему приложению (без активности) в Android Выбор номера диалогового окна Android HTTP-запрос для файла XML Как установить часть текста в жирный шрифт при использовании AlertDialog.setMessage () в Android? FFMPEG для инструментальных цепей Android: arm-linux-armeabi-eabi-pkg-config – существует ли какая-либо инструментальная цепочка, содержащая инструмент pkg-config XmlPullParser не работает с InputStream Нет такой ошибки метода при использовании robospice-retrofit и getstream.io Android: Прослушивание изменений контактов, таких как WhatsApp Поведение popBackStack () отличается после обновления библиотеки поддержки с 23.1.1 до 25.1.0 Получение SMS-сообщений с SIM-карты

Как передать параметр в файл HTML из андроида

Я могу показать содержимое HTML-файла в Android-браузере хорошо. Теперь как я могу передать параметр в файл HTML. Для ex.my HTML-контента есть видеопроигрыватель, мне нужно передать динамические значения (URL) в HTML-файл для воспроизведения динамического видео. HTML-файл находится в папке с ресурсами. Как я могу это сделать?

Благодарю.

Вместо того, чтобы напрямую передавать URL-адрес видео (после примера), я бы использовал токены в Html-файле. Например:

<embed src="$VIDEO_URL$" autostart="false" /> 

Где $VIDEO_URL$ будет токеном, который будет заменен во время выполнения с настоящим URL видео.

Кроме того, поскольку вы не можете изменить содержимое папки вашего ресурса во время выполнения, вы должны загрузить содержимое файла html в переменную String и использовать метод replace, чтобы заменить токен на реальный URL и, наконец, передать эту строку в ваш веб-просмотр. Что-то вроде этого:

 //The html variable has the html contents of the file stored in the assets folder //and real_video_url string variable has the correct video url html = html.replace("$VIDEO_URL$", real_video_url); webview.loadData(html, "text/html", "utf-8"); 

Сегодня я столкнулся с этой проблемой, однако мне это нужно для работы с кодировкой UTF-8, поэтому это был мой подход, надеюсь, это поможет кому-то и прояснит некоторые из предыдущих ответов на этот вопрос.

HTML:

 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <h1>%ERR_TITLE%</h1> <h2>%ERR_DESC%</h2> </body> </html> 

Ява:

 String content = IOUtils.toString(getAssets().open("error.html")) .replaceAll("%ERR_TITLE%", getString(R.string.error_title)) .replaceAll("%ERR_DESC%", getString(R.string.error_desc)) mWebView.loadDataWithBaseURL("file:///android_asset/error.html", content, "text/html", "UTF-8", null); 

Что касается IOUtils: http://commons.apache.org/proper/commons-io/download_io.cgi

Если бы я хотел иметь что-то динамическое в своем HTML, у меня был бы html с динамическими частями, написанными следующим образом:

 <B>%NAME%</B> 

Тогда я бы загрузил свой HTML:

 String template = Utils.inputStreamToString(assets.open("html/template.html")); 

То тогда я заменил бы все части динамики тем, что хочу:

 String data = template.replaceAll("%NAME%", "Alice McGee"); 

То я передам его в мой webView!

 WebView webView = new WebView(this); webView.loadDataWithBaseURL("file:///android_asset/html/", data, "text/html", "utf-8", null); 

Мне удалось передать переменные по-другому.

Моя проблема заключалась в том, что каждый раз, когда я переключался на другое приложение, когда приходил к webapp, веб-просмотр сохранял перезагрузку. Я предполагаю, что это из-за следующей строки в моем onCreate() : myWebView.loadUrl(url); У меня возникла идея передать эти переменные состояния в URL-адрес, но, как вы знаете, это пока невозможно. Я сделал, чтобы сохранить состояние некоторых переменных, используя onSaveInstanceState(Bundle outState) {...} и восстановить их с помощью onRestoreInstanceState(Bundle savedInstanceState){...} .

В методе onCreate после настройки myWebView я сделал следующее:

 myWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String urlString) { Log.i("onPageFinished", "loadVariables("+newURL+")"); if(newURL!="") myWebView.loadUrl("javascript:loadVariables("+"\""+newURL+"\")"); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); jsInterface = new JSInterface(this,myWebView); myWebView.addJavascriptInterface(jsInterface, "Android"); if (savedInstanceState != null) { // retrieve saved variables and build a new URL newURL = "www.yoururl.com"; newURL +="?var1=" + savedInstanceState.getInt("key1"); newURL +="?var2=" + savedInstanceState.getInt("key2"); Log.i("myWebApp","NEW URL = " + newURL); } myWebView.loadUrl("www.yoururl.com"); 

Итак, что происходит, так это то, что сначала я загружаю страницу с URL-адресом по умолчанию (www.yoururl.com) и onPageFinished. Я вызываю новый метод javascript, где передаю переменные. В javascript loadVariables функция выглядит так:

 function loadVariables(urlString){ // if it is not the default URL if(urlString!="www.yoururl.com") { console.log("loadVariables: " + urlString); // parse the URL using a javascript url parser (here I use purl.js) var source = $.url(urlString).attr('source'); var query = $.url(urlString).attr('query'); console.log("URL SOURCE = "+source + " URL QUERY = "+query); //do something with the variables } } 

Здесь активы означают что?

String template = Utils.inputStreamToString (assets.open ("html / template.html"));