2017-10-19 18 views
1

J'ai quelques problèmes avec Android WebView et Javascript. Certains des clients de l'application ont déclaré que WebView sur l'application ne montre rien. Comme j'ai vérifié - il ne montre probablement pas du tout javascript (la page Web entière est chargée dans javascript par réagir).Javascript sur Android WebView ne fonctionne pas

Que mon code:

public void setupWebView(WebView accessWebView) { 
    accessWebView.setWebViewClient(new WebViewClient() { 

     @SuppressWarnings("deprecation") 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView webView, String url) { 
      handleRedirect(accessWebView); 
      return true; 
     } 

    }); 
    accessWebView.getSettings().setJavaScriptEnabled(true); 
    accessWebView.getSettings().setDomStorageEnabled(true); 
    accessWebView.loadUrl(URL); 

(je dois utiliser WebViewClient, non WebChromeClient, à cause de la redirection de manutention)

Y at-il possible de changer de sorte que le javascript chargera sur tous les appareils avec Android +5.0? Est-il possible que la mise à jour de WebView sur l'appareil aide certains utilisateurs?

Répondre

1

Vous devez utiliser setWebChromeClient pour activer javascript dans votre WebView. Mais ne vous inquiétez pas, vous pouvez utiliser à la fois setWebChromeClient et setWebViewClient en même temps. Tout comme dans docs officiels:

// Let's display the progress in the activity title bar, like the 
    // browser app does. 
    getWindow().requestFeature(Window.FEATURE_PROGRESS); 

    webview.getSettings().setJavaScriptEnabled(true); 

    final Activity activity = this; 
    webview.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
     // Activities and WebViews measure progress with different  scales. 
     // The progress meter will automatically disappear when we reach 100% 
     activity.setProgress(progress * 1000); 
    } 
    }); 
    webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String  description, String failingUrl) { 
     Toast.makeText(activity, "Oh no! " + description,  Toast.LENGTH_SHORT).show(); 
    } 
    }); 

    webview.loadUrl("https://developer.android.com/"); 

https://developer.android.com/reference/android/webkit/WebView.html

+0

Merci pour cette information. Ce n'était pas utile dans ce cas malheureusement. Je pense que c'est peut-être le problème avec ce site qui est chargé dans webview. Il est entièrement écrit en réaction et peut utiliser des méthodes qui ne peuvent être disponibles que sur les WebViews les plus récents. Donc pour l'instant, j'ai recommandé de mettre à jour l'application WebView. –