2015-10-10 10 views

risposta

34

I leggere la documentazione in 1.000 tentativi Android.developer e questa era la mia soluzione

Non so se capisci, parlo spagnolo

webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false;     
    } 
}); 
+0

funziona come un fascino, grazie – Abdullah

+0

di lavoro! @Abdullah per favore accetta questa risposta se questo funziona per te. –

+0

@Abdullah, si prega di accettare questa risposta. È corretto – rkyr

-1

Come alternativa, ho capito è stato quello di aggiungere addJavascriptInterface ogni pulsante click azione calore evento per JavascriptInterface

webView.addJavascriptInterface(new java2JSAgent(), "java2JSAgentVar"); //webView webview object 

public class java2JSAgent 
{ 
    @JavascriptInterface 
    public String getContacts() 
    { 
     String jsonResponse = "{result:'redirected'}"; 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       webView.loadUrl("file:///android_asset/index.html"); 
      } 
     }); 
     return jsonResponse; 
    } 
} 

potrebbe non essere un buon approccio, ma atleast suo funzionamento :-) Grazie

0

Ci sono alcuni problemi qui.

  1. Dai androidi più recenti, il client WebView e Chrome è separato, che può essere aggiornato automaticamente senza l'intenzione dell'utente.

  2. Dalla versione x> = 25 di Chrome, hanno cambiato il modo in cui il caricamento url sta funzionando nell'applicazione Android che utilizza il componente webview. https://developer.chrome.com/multidevice/android/intents sembra che stanno bloccando la modifica URL senza gesto dell'utente e lanciato da JavaScript timer

soluzione è quella di forzare all'utente di attivare il cambiamento URL, ad esempio su clic del pulsante.

Inoltre, è possibile sovrascrivere il metodo sopra indicato "shouldOverrideUrlLoading" nel client WebView.

5

Questo ha funzionato per me:

webView.setWebViewClient(new WebViewClient());