安卓webview网页卡死,卡住没反应
遇到一个奇怪的问题,一个web网页,嵌入安卓app webview 后,用户在网页操作后,整个网页卡死了
很神奇
不断的排查
后来发现:是 webview 没有实现 alert() prompt()等弹窗,导致页面看起来是假死、卡住,卡死了一样
实际上是:js 调用 alert() 之后,应该回到app 原生层的UI,但是原生app 的webview 没实现 alert,导致什么都没显示,但app原生那边可能有个透明的层盖住了web网页。
所以看起来就是卡死,web页面点击没有任何反应,没有任何事件响应。
参考资料
https://stackoverflow.com/questions/5271898/javascript-alert-not-working-in-android-webview
看起来最简单的办法是这样,在原生app那边加代码
mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new WebChromeClient());
或者加这个
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });
好了,问题定位到原因了,也解决了。
其他问题
其他的app 端,webview 录音报错、不正常,也是需要安卓原生加代码,把请求麦克风录音的弹窗弹出来,才能正常的录音。
默认不加代码,webview 录音也是没法正常走通的。
app 混合开发,还是蛮多问题的。
目前经过调试,在app 上, getUserMedia()录音、alert 都正常了。