El botón Html de Webview hace clic en detección en Actividad (código Java)

Intenté detectar el clic del botón html de la vista web en el código de java (En actividad).
Remití otro SO
Detectar hacer clic en el botón HTML a través de javascript en Android WebView

pero no funciona. Mi código:

index.html

   function js1() { document.loginform.method="post"; document.loginform.action = "https://example.com/chechlogin.asp"; }    

MainActivity.java

 package com.example.webview; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.Window; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; @SuppressLint("SetJavaScriptEnabled") public class MainActivity extends Activity { private EditText field; private WebView browser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); field = (EditText)findViewById(R.id.urlField); browser = (WebView)findViewById(R.id.webView1); browser.getSettings().setJavaScriptEnabled(true); browser.setWebViewClient(new MyBrowser()); browser.loadUrl("file:///android_asset/index.html"); } @SuppressLint("JavascriptInterface") public void open(View view){ String url = field.getText().toString(); browser.getSettings().setLoadsImagesAutomatically(true); browser.getSettings().setJavaScriptEnabled(true); browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); browser.loadUrl(url); browser.addJavascriptInterface(new Object() { @JavascriptInterface public void performClick() { Log.d("LOGIN::", "Clicked"); Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show(); } }, "login"); } private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

Pero el método performClick () no se está llamando.
Por favor, corrige el error.

Así es como lo implementé:

 public class FirstActivity extends Activity { WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); mWebView = (WebView) findViewById(R.id.webView1); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); mWebView.loadUrl("file:///android_asset/html/File1.html"); } public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } /** Show a toast from the web page */ @JavascriptInterface public void nextScreen(String pro_cat_id) { startActivity(new Intent(mContext, MainActivity.class)); } 

Y, en el archivo html:

javascript: file3.js

 function saveId(_id) { localStorage.setItem("id", _id); Android.nextScreen(_id); } 

HTML:

          

intenta pagar esto

  browser.addJavascriptInterface(new Object() { @JavascriptInterface public void performClick() { Log.d("LOGIN::", "Clicked"); Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show(); } }, "login"); 

a esto

 Button btnLogin=new Button(ctx); btnLogin.setOnClickListener(this); browser.addJavascriptInterface(btnLogin,"login"); @Override public void onClick(View v) { //do Something } 

y en index.html

      

Más información aquí: https://developer.android.com/guide/webapps/webview.html#BindingJavaScript

Debe crear y pasar una interfaz de JavaScript de Android a JavaScript. A continuación, puede utilizar esta interfaz como un puente para pasar llamadas a funciones con argumentos.

Más detalles y ejemplos aquí: http://developer.android.com/guide/webapps/webview.html#BindingJavaScript

Ooops!
El método performClick () estaba en el lugar equivocado.
MainActivity.java debería ser algo como esto:

 package com.example.webview; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.Window; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; @SuppressLint("SetJavaScriptEnabled") public class MainActivity extends Activity { private WebView browser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); browser = (WebView)findViewById(R.id.webView1); browser.getSettings().setJavaScriptEnabled(true); browser.getSettings().setLoadsImagesAutomatically(true); browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); browser.setWebViewClient(new MyBrowser()); browser.loadUrl("file:///android_asset/index.html"); } private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); view.addJavascriptInterface(new Object() { @JavascriptInterface public void performClick() throws Exception { Log.d("LOGIN::", "Clicked"); Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show(); } }, "login"); return true; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

En html, primero haga un botón con el nombre de BtnLogin con el método performClick () como se muestra a continuación:

  

Ahora en Android (Actividad o Fragmento) usarás el siguiente código:

 private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); view.addJavascriptInterface(new Object() { @JavascriptInterface public void performClick() throws Exception //method which you call on button click on HTML page { Log.d("LOGIN::", "Clicked"); Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show(); } }, "BtnLogin");// identify which button you click return true; } } 

Espero que ayude