Android webview崩溃“致命信号5(SIGTRAP)”

时间:2017-03-21 11:11:52

标签: javascript java android webview

我有一个带有webview的应用程序,我在其中加载了启用了javascript的HTML内容。 webview位于片段内。

这是我在片段的onCreateView方法中初始化webview的方法:

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", "");

在webview中,地图加载了javascript。在此地图上,我们可以点击元素并加载照片。单击时,照片将显示在弹出窗口中(仍在Webview中)。当我点击后退按钮返回地图时,应用程序崩溃了。

GIF of the crash in app

以下是错误日志:

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

我在Android 7.1.1,6.0.1,5.0.2上测试并获得了崩溃。然后我尝试使用Android 4.4.2,应用程序没有崩溃。

当我点击后退按钮时(正如我们在GIF上看到的那样),当弹出窗口关闭时它应该回到之前的状态

1 个答案:

答案 0 :(得分:-1)

试试这个......

首先添加此

 <div class="my-component">
    <div [innerhtml]="'Title:' + my-title"></div>
    <div [innerhtml]="'Content:' + my-content"></div>
</div>

然后添加此

webView.setWebViewClient(new MyBrowser());