Android:Web App 可在 Chrome 中使用,但不能在 Webview 中使用
Posted
技术标签:
【中文标题】Android:Web App 可在 Chrome 中使用,但不能在 Webview 中使用【英文标题】:Android: Web App Works in Chrome, but not Webview 【发布时间】:2015-06-27 13:04:57 【问题描述】:我在我的网络应用程序中使用ng-hide
和ng-show
来处理根据用户的登录状态显示的内容。如果我在手机上使用 Chrome 浏览器并运行该网站,这完全可以正常工作。
但是,当我尝试在我的应用程序或默认手机非 Chrome 浏览器的 web 视图中显示它时,它不起作用。没有任何内容被隐藏,并且绑定到 angularJS 函数的按钮不起作用。请注意,我确实设置了setjavascriptEnabled(true)
。
当我查看这个问题时,我注意到某些 AngularJS 功能在某些浏览器(尤其是 IE)上不起作用,因此 AngularJS 可能与默认的 Webview 不兼容。那么是否有一种解决方法或某种方法可以让 webview 模拟 Chrome 浏览器?
Chrome 浏览器上的应用程序:http://gyazo.com/8a8a56bdac1eb7e91753bc4745433a42 Webview上的应用程序:http://gyazo.com/a58de6192aa822af05a2885560e66f91
logcat 中有以下错误,我已经调查过了,没有任何意义,因为这两个变量在非 webview 环境中都没有问题。
E/Web 控制台:Uncaught SyntaxError: Unexpected identifier:103 E/Web 控制台::未捕获的错误:没有模块:AuthApp:17
未捕获的语法错误对应于以下内容,其中 results 是我从 Parse 获得的查询结果。请注意,我在其他浏览器中检查了结果的内容,实际上它正在将结果返回给我的查询。
for (var result of results)
...
【问题讨论】:
您能否分享 manifest.json 中的非敏感信息?在加载应用程序时,还要在控制台日志中发布您收到的任何错误。 Webview 内部和外部的应用程序屏幕截图也会有所帮助。 【参考方案1】:在您的网络视图上尝试这些设置。我过去在这些方面取得了成功
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
【讨论】:
不走运。添加这些设置后,angularJS 的东西仍然无法正常工作。 webSettings.setJavaScriptEnabled(true) 和 webSettings.setDomStorageEnabled(true) 为基于 angularjs 的网站做了诀窍.. 谢谢【参考方案2】:您可以添加这些行,它将解决您的问题
when
Build.VERSION.SDK_INT >= 21 ->
binding.webView.settings.mixedContentMode = 0
binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
Build.VERSION.SDK_INT >= 19 ->
binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
Build.VERSION.SDK_INT < 19 ->
binding.webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
【讨论】:
以上是关于Android:Web App 可在 Chrome 中使用,但不能在 Webview 中使用的主要内容,如果未能解决你的问题,请参考以下文章
Twilio 视频在 Android 上的 Chrome 和 iOS 上的 Safari 中失败,可在桌面上运行
Chrome OS上的Android app公测项目将持续到今夏