2017-03-21 30 views
8

Bir javascript etkinken HTML içeriği yüklediğim bir web görünümüne sahip bir uygulamam var. Web görünümü bir parçanın içinde.Android webview kilitlenmesi "Önemli işaret 5 (SIGTRAP)"

WebView'da
WebView webview = (WebView) mainView.findViewById(R.id.webview); 

WebSettings webSettings = webview.getSettings(); 

webSettings.setJavaScriptEnabled(true); 
webSettings.setDisplayZoomControls(false); 
webSettings.setLoadsImagesAutomatically(true); 
webSettings.setBuiltInZoomControls(true); 
webSettings.setDomStorageEnabled(true); 
webSettings.setSupportMultipleWindows(true); 

webview.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      /* 
      * My code 
      */ 
     } 
    }); 

webview.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { 
      WebView.HitTestResult result = view.getHitTestResult(); 
      String data = result.getExtra(); 
      if (data != null) { 
       Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data)); 
       startActivity(browserIntent); 
      } 
      return false; 
     } 
    }); 

webview.loadDataWithBaseURL(baseUrl, htmlData, "text/html", "utf-8", ""); 

, bir harita JavaScript ile yüklenir:

Bu fragmanı gibi bir yöntem onCreateView içinde web görünümünü başlatmak nasıl. Bu haritada, öğeleri tıklayabilir ve fotoğrafları yükleyebiliriz. Tıklandığında, fotoğraf bir açılır pencerede görüntülenir (hala web görünümünde). Haritaya geri dönmek için geri düğmesine tıkladığımda, uygulama çöker.

A/libc: Fatal signal 5 (SIGTRAP), code 1 in tid 949 (Chrome_InProcRe) 
    [ 03-21 11:26:08.510 364: 364 W/   ] 
    debuggerd: handling request: pid=32610 uid=10289 gid=10289 tid=949 

ben test ve Android 7.1.1, 6.0.1, 5.0.2 üzerinde kilitlenme var: Burada

GIF of the crash in app

hata günlüğü olduğunu. Sonra Android 4.4.2 ile denedim ve uygulama çökmedi.

(biz GIF üzerinde görebileceğiniz gibi) geri butonuna tıkladığınızda,

Öncelikle bu eklemek ....

+0

eklemek? lütfen aşağıdaki gibi bir webchromeclient ayarlayın: webview .setWebChromeClient (yeni WebChromeClient()); –

+0

Javascript debbugging için WebChromeClient –

+0

@ user2281606'daki onConsoleMessage'i geçersiz kılmak iyidir, emülatörde iyi çalışır. Ayrıca, zaten bir webchrome istemcisi ayarlıyordum. Kodu sorgumda düzenledim. https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews adresinden uzaktan hata ayıklama ile günlükleri görmeyi denedim ancak – Eddybrtn

cevap

-1

bu deneyin kapalı pop-up ile önceki durumuna geri dönmeli

webView.setWebViewClient(new MyBrowser()); 

ve sonra bu cihazın veya emülatörünüzde test edebilirim

public class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // TODO Auto-generated method stub 

      if (url.equals(""YOUR URL)) { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } else { 
       return false; 
      } 

     } 

    } 
+0

Çalışmıyor, geri arama tıklamayı yakalamıyor. Daha fazla açıklamanız var mı lütfen? – Eddybrtn