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-hideng-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 中失败,可在桌面上运行

web移动端和PC端利用chrome同步开发调试

Chrome OS上的Android app公测项目将持续到今夏

Android版App的控件元素定位

Web App 可在不刷新页面的情况下最好地添加、删除和编辑行

Java Web 服务可在 Java 应用程序中使用,但不能在 android 应用程序中使用