2016-10-03 3 views
1

Я загружаю веб-URL в веб-просмотр. Как показано ниже: -WebView обнаружение события нажатия кнопки

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

Как определить событие нажатия кнопки на загруженной странице. Скажем, например, я хочу показать тост «Щелкнуть», когда пользователь нажимает на вкладку «Изображения» после завершения поиска. (Обратите внимание, что обнаружение нажатия кнопки на одну страницу впереди загруженной мной страницы).

Что я пробовал: - Я сделал некоторое исследование о том, как это сделать, но ни один из них не был плодотворным. Ниже один из них: -

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> 

Но это требует добавления OnClick в HTML, я не уверен, что это можно сделать на веб-сайте 3-й партии. Пожалуйста, бросьте какой-то свет в проблему, если у кого-нибудь есть ключ.

+0

инъекционные JavaScript с 'WebView.loadUrl' который будет найти кнопку как-то и добавить щелчка слушателя – Selvin

ответ

1

Checkout ниже код .. его работает отлично для меня

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

} 
Смежные вопросы