Edd*_*rtn 14 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", "");
Run Code Online (Sandbox Code Playgroud)
在webview中,地图加载了javascript.在此地图上,我们可以点击元素并加载照片.单击时,照片将显示在弹出窗口中(仍在Webview中).当我点击后退按钮返回地图时,应用程序崩溃了.
这是错误日志:
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
Run Code Online (Sandbox Code Playgroud)
我在Android 7.1.1,6.0.1,5.0.2上测试并获得了崩溃.然后我尝试使用Android 4.4.2并且应用程序没有崩溃.
当我点击后退按钮时(正如我们在GIF上看到的那样),当弹出窗口关闭时它应该回到之前的状态
小智 0
尝试这个....
首先添加这个
webView.setWebViewClient(new MyBrowser());
Run Code Online (Sandbox Code Playgroud)
然后添加这个
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)