2016-10-03 3 views
1

Ich lade eine Web-URL in Webview. Wie unten: -WebView erkennen Button klicken Ereignis

mWebView    =  (WebView)findViewById(R.id.id__web_view); 
mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.setWebViewClient(new WebViewClient()); 
mWebView.loadUrl("http://www.google.com"); 

Wie kann ich ein Knopfklickereignis innerhalb der geladenen Seite erkennen. Sagen Sie zum Beispiel, ich möchte einen Toast "Clicked" zeigen, wenn der Benutzer auf die Registerkarte "Bilder" klickt, nachdem die Suche abgeschlossen ist. (Bitte beachten Sie, dass die Erkennung des Klickens der Schaltfläche eine Seite vor der Seite liegt, die ich geladen habe).

Was ich versucht habe: - Ich habe einige Nachforschungen darüber gemacht, wie man das macht, aber keine davon war fruchtbar. Unten ist unter ihnen: -

WebSettings ws = wv.getSettings(); 
ws.setJavaScriptEnabled(true); 
wv.addJavascriptInterface(new Object() 
{ 
    public void performClick() 
    { 
    // Deal with a click on the OK button 
    } 
}, "ok"); 

<button type="button" onclick="ok.performClick();">OK</button> 

Aber dies erfordert Onclick in dem HTML-Code hinzufügen, ich bin nicht sicher, ist es möglich, sie auf einer 3rd-Party-Website zu tun. Bitte werfen Sie etwas Licht in das Problem, wenn jemand eine Ahnung hat.

+0

Javascript injizieren mit 'WebView.loadUrl', die auf den Button irgendwie und fügen Sie klicken Zuhörer finden würde – Selvin

Antwort

1

Kasse Code unten .. seine Arbeit gut für mich

@SuppressLint("SetJavaScriptEnabled") 
public class MainActivity extends Activity { 

    private WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mWebView = (WebView)findViewById(R.id.webView1); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setLoadsImagesAutomatically(true); 
     mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     mWebView.setWebViewClient(new MyBrowser()); 
     mWebView.loadUrl("file:///android_asset/index.html"); 
    } 


    private class myWebViewClient 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; 
    } 

} 
Verwandte Themen