Come passare il parametro in file HTML da android

Posso mostrare il contenuto del file HTML in android webview well.Now come posso passare il parametro in HTML file.For ex.my contenuto HTML è un video player ho bisogno di passare valori dinamici (URL) in file HTML per la riproduzione di video dinamico. Il file HTML si trova sulla cartella degli asset. Come posso fare questo?

Grazie.

  • errore di cordova ENOENT
  • Avviso di protezione di Google Play - L'applicazione utilizza un'implementazione non sicura del hostnameVerifier
  • Passaggio di arrayslist in intento da un'attività all'altra
  • Corsa Android aperta?
  • Posizionamento Android di file XML personalizzati
  • Perché l'applicazione non è compatibile con le compresse dopo l'aggiornamento
  • 5 Solutions collect form web for “Come passare il parametro in file HTML da android”

    Invece di passare direttamente l'URL del video (seguendo l'esempio), avrei usato i token nel file Html. Per esempio:

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

    where $VIDEO_URL$ sarà il token che verrà sostituito durante il runtime con un URL video reale.

    Inoltre, poiché non è ansible modificare il contenuto della cartella dell'assistente durante il runtime, è necessario caricare il contenuto del file html in una variabile String e utilizzare il metodo di sostituzione per sostituire il token con un URL reale e, infine, passare quella string al tuo webview. Qualcosa come questo:

     //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"); 

    Oggi ho trovato questo problema, però ho avuto bisogno di questo per funzionare con la codifica UTF-8, quindi questo è stato il mio approccio, spero che aiuterà qualcuno e chiarirà alcune delle risposte precedenti a questa domanda.

    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> 

    Giava:

     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); 

    Per IOUtils: http://commons.apache.org/proper/commons-io/download_io.cgi

    Se vorrei avere qualcosa di dinamico nel mio HTML avrei un html con parti dinamiche scritto così:

     <B>%NAME%</B> 

    Poi caricherei il mio HTML:

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

    allora Poi sostituirei tutte le parti della dynamic con quello che voglio come questo:

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

    poi lo passerei al mio webView!

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

    Sono riuscito a passare le variables in un modo diverso.

    Il mio problema era che each volta che ho passato ad un'altra applicazione, quando sono venuti al webapp, il webview ha continuato a ricaricare. Suppongo che sia a causa della seguente row nel mio metodo onCreate() : myWebView.loadUrl(url); Ho avuto l'idea di passare queste variables di stato nell'URL, ma come sapete non è ancora ansible. Quello che ho fatto è stato salvare lo stato di alcune variables usando onSaveInstanceState(Bundle outState) {...} e ripristinarle con onRestoreInstanceState(Bundle savedInstanceState){...} .

    Nel metodo onCreate dopo aver impostato myWebView ho eseguito le seguenti operazioni:

     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"); 

    Quindi, ciò che accade è che prima carichi la pagina con l'URL predefinito (www.yoururl.com) e onPageFinished. Chiamo un nuovo metodo javascript in cui passa le variables. In javascript loadVariables function ha questo aspetto:

     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 } } 

    qui i beni significa che cosa?

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

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.