JavaScript Interface Android WebView Call Java function From JS onclick

publicado por: Anonymous

Tengo todo este código pero no consigo que funcione JavaScript Interface para que con un boton html se ejecute una funcion en java que inicie una aplicacion con el método intent.

Estoy usando Webview chrome client, un archivo index.html ubicado en /main/assets que contiene los botones ,si alguien puede ayudarme, es urgente gracias.

// Enabling JS
mWebView.getSettings().setJavaScriptEnabled(true);

myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

// Java and Javascript interfacing
mWebView.addJavascriptInterface(new JavascriptInterface(), "JsInterface");



// outside oncreate
public class JavaScriptInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    JavaScriptInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    public void FacebookIntentShare(Intent) {
        Facebook Intent
    }
}



<a href="#" onclick="FacebookIntentShare()">Iniciar Facebook</a>

  <button type="button" onclick="FacebookIntentShare();">Iniciar 
  Facebook</button>

<script type="text/javascript">
function FacebookIntentShare(){
   //return value to Android 
   codigo que llame a una funcion de java...
la funcion de java debe lanzar un intent send to
}
</script>

solución

Si defines de esta manera tu interfaz, esta se llamaría "Android":

JavaScriptInterface jsInterface = new JavaScriptInterface();
myWebView.addJavascriptInterface(jsInterface, "Android");

obviamente el método que deseas llamar debe estar declarado en la interfaz, importante declarar @JavascriptInterface :

public class JavaScriptInterface {

    @JavascriptInterface
    public void FacebookIntentShare() {
     ...
     ...
    }

}

Por lo tanto cuando realices la llamada de los métodos dentro del código HTML debes especificar que es un método de la interfaz "Android", por ejemplo:

<a href="#" onclick="Android.FacebookIntentShare()">Iniciar Facebook</a>

o simplemente:

   <a href="#" onclick="FacebookIntentShare()">Iniciar Facebook</a>

Ejemplo: Android Javascript Interface

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *