安卓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 都正常了。