Quella può essere facilmente se si utilizza il JavascriptInterface
. Segui il mio passo:
1.Creare un callback di interfaccia:
public class MediaWebInterface {
public MediaWebInterface() {
}
@JavascriptInterface
public void setEndedIndex(int pIndex) {
// Call when the audio ended.
}
}
2.Creare un javascript che contengono un "finita" ascoltatore:
<script type='text/javascript'>window.onload=function(){var n=document.getElementsByTagName("audio"),r=n.length;for(var o=0;o<r;o++)n[o].setAttribute("index",o),n[o].addEventListener("ended",function(){for(var e=0;e<r;e++)this===n[e]&&window.external.setEndedIndex(e)})}
</script>
3.Inserire i dati html in un String
e aggiungere sopra javascript per i tuoi dati html String
:
// Enable javascript support
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new MediaWebInterface(mHandler), "external");
mWebView.loadDataWithBaseURL(mBaseURL, mHTMLData+aboveJavascript, null, "utf-8", null);
4. Quando l'audio si ferma, chiamerà lo MediaWebInterface.setEndedIndex(pIndex)
e pIndex è l'indice dell'audio.
Hava divertimento, e provalo!
Leggere prima il WebView.addJavascriptInterface()!
Avvisi: Se si utilizza proguard, è necessario aggiungere script di follow nel proprio proguard-project.txt
. Altrimenti, la callback non sarà valida. Poiché il nome e il metodo della classe saranno offuscati, quindi il javascript non può richiamare.
//Preserved javaScript interface class
-keepclassmembers class com.xxx.xxx.javascript.MediaWebInterface {
public *;
}
qualsiasi aiuto sarà molto apprezzato – Fou
Cosa hai provato finora? A partire da ora, non vedo alcun codice o indicazione che tu abbia mai fatto qualche sforzo per risolverlo da solo. –
@esme_louise Ho provato diverse idee per me non funziona, basta continuare a cambiare un codice in un altro ... – Fou