我有一个带有 Web View 的应用程序,我在其中加载启用了 JavaScript 的 HTML 内容。 Web View 位于 fragment 内。
这就是我在 fragment 的 onCreateView
方法中初始化 Web View 的方式:
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 中, map 是用 JavaScript 加载的。在此 map 上,我们可以单击元素并加载照片。单击时,照片会显示在弹出窗口中(仍在 Web View 中)。当我点击后退按钮返回 map 时,应用程序崩溃了。
这是错误日志:
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 上看到的那样),它应该返回到弹出窗口关闭的前一个状态
最佳答案
尝试覆盖后退导航功能并自行关闭弹出窗口。
您无需处理所有堆栈导航逻辑,只需在显示此弹出窗口时有一个状态即可。 应用您自己的导航逻辑(例如手动关闭弹出窗口)。
void onBackPressed(){
if(isTheBuggyPopupIsOn){
closeTheBuggyPopup();
}
else{
super.onBackPressed();
}
}
关于javascript - Android WebView 崩溃 "Fatal signal 5 (SIGTRAP)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42925436/