2015-01-16 2 views
2

Прежде всего, этот пост может выглядеть как возможный дубликат другого вопроса, но я столкнулся с множеством вопросов, но нашел, что они не помогают. Теперь моя проблема заключается в том, что я загружаю URL-адрес в своем веб-представлении, а затем я хочу отслеживать URL-адрес каждого события в веб-просмотре, поэтому я настроил WebviewClient для Webview и переопределил метод overoverrideurrloading, но после первого события shouldoverrideurlloading не получил вызов. (Работал первый раз)shouldoverrideurlloading не называется Webview Android

Вот код, который я использовал:

wvSecurity = (WebView) findViewById(R.id.wvSecurity);    
    wvSecurity.getSettings().setJavaScriptEnabled(true); 
    wvSecurity.getSettings().setAllowContentAccess(true); 
    wvSecurity.getSettings().setAllowUniversalAccessFromFileURLs(true);  
    wvSecurity.getSettings().setBuiltInZoomControls(false); 
    wvSecurity.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    wvSecurity.getSettings().setLoadWithOverviewMode(true); 
    wvSecurity.getSettings().setDomStorageEnabled(true); 

    wvSecurity.loadUrl("URL"); 

    wvSecurity.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, 
         final String urlStr) { 
        Log.i("URL", "::" + urlStr); 
        return false; 
       } 
    } 

EDIT ::

Хорошо, URL-адрес, который я хочу Трассировка использует метод POST, теперь мой вопрос Как я могу отслеживать URL-адрес POST и его данные. И одно, у меня нет доступа к веб-странице, поэтому я просто не могу использовать метод GET. Пожалуйста помоги !!!

+0

Вы пытаетесь вернуть «истину» из 'shouldOverrideUrlLoading'? –

+0

Да, я пробовал, что ничего не сделал – GOLDEE

+0

Я пробовал из 8-21 Каждый API – GOLDEE

ответ

1

Я предполагаю, что этот метод вызывается, когда гиперссылка берется с страницы или происходит какое-то перенаправление. Поэтому убедитесь в этом.

0

Я думаю, вам нужно передать URL-адрес на «URL», чтобы решить эту проблему.

 wvSecurity = (WebView) findViewById(R.id.wvSecurity); 
     wvSecurity.getSettings().setJavaScriptEnabled(true); 
     wvSecurity.getSettings().setAllowContentAccess(true); 
     wvSecurity.getSettings().setAllowUniversalAccessFromFileURLs(true); 
     wvSecurity.getSettings().setBuiltInZoomControls(false); 
     wvSecurity.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     wvSecurity.getSettings().setLoadWithOverviewMode(true); 
     wvSecurity.getSettings().setDomStorageEnabled(true); 
     wvSecurity.loadUrl("http://www.google.com"); 
     wvSecurity.setWebViewClient(new HelloWebViewClient()); 



    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      System.out.println("URL :: " + url); 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageFinished(WebView view, final String url) { 
     } 
    } 
+0

Пожалуйста, не вызывайте loadUrl на url, который вы получаете из 'shouldOverrideUrlLoading', поскольку этот обратный вызов также вызывается для подкадров с не-https-схемами. Если вы перейдете на страницу, похожую на http://jsbin.com/gupug/1/quiet, ваш код в конечном итоге вызовет view.loadUrl ('tel: 1234'), и вы в конечном итоге покажете страницу с ошибкой, так как webview doesn Не знаете, как загрузить tel: URL. Вместо вызова loadUrl (url) и возврата true вы должны просто вернуть false из shouldOverrideUrlLoading. –

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