我如何确保Android phonegap / cordova应用程序使用Chrome浏览器?
我正在写一个扭曲SVGgraphics的游戏应用程序,直到他们哭泣“舅舅”。 该程序在iPad上运行(safari / webkit)时,从Web服务器托pipe,这里不需要再说了。 只要使用最新版本的Chrome(如v.25或更高版本),它就可以在Android平板电脑上运行。
该程序根本不访问互联网,但使用其SVGgraphics,运行Javascript和存储状态HTML5 localStorage()。
如果我在较老的Android平板电脑的“默认浏览器”上运行该程序,则SVGgraphics无法正确处理,因此我需要在平板电脑上使用最新版本的Chrome。
我刚刚为我的应用程序创build了一个APK,并且发现在我将它安装在新的Android平板电脑上时,它不会使用Chrome浏览器。 相反,它似乎使用embedded在APK中的浏览器,或者至less从平板电脑中存在剩余库的APK中调用。
我的APK的目标是使我的代码运行显示最近的webkit浏览器,这似乎意味着在Chrome环境中运行。
对于我的问题,我需要改变一些事情。 但是什么?
- 在我的APK中embeddedChrome浏览器?
- 告诉APK使用平板电脑的Chrome浏览器?
- 放弃使用APK分发程序?
- ???
亲爱的读者有我的线索吗?
谢谢,
杰罗姆。
我build议人行横道 ,但自2017年3月19日起,它已经被宣布为EOL(更多信息见下文)。 尽pipe如此,这是迄今为止最稳定的解决scheme,我们的团队目前在生产应用中使用它。 简而言之,它将在您的apk文件中打包一个基于Chromium的webview,并由Intel支持。 你可以从Android 4.X开始使用它。
正式销售点:
Crosswalk是一个雄心勃勃的HTML5应用程序的Web运行时。 它提供了现代浏览器的所有function,并结合深层设备集成和用于添加本机扩展的API。 它特别适合移动设备,同时支持Android和Tizen。
对于cordova4.0.0和更高版本,有一个官方的Crosswalk插件,使得它很容易启动和运行: https : //github.com/crosswalk-project/cordova-plugin-crosswalk-webview
如果你的cordova项目正在运行,你所要做的就是
cordova plugin add cordova-plugin-crosswalk-webview --save
添加Crosswalk webview插件。 下一个版本将获取所有依赖关系,并将所有内容打包好。
Android 4.4.x
在Android 4.4上,您的混合应用程序将运行在基于Chromium的WebView上,但是,它将永久停留在相同的版本上(如果我没有弄错Chromium 33)。 在我看来,这里最好还是使用Crosswalk。
Android 5.0+
如果您为Android 5.0及更高版本编码,Chromium WebView将通过Google Play进行更新。 更多信息在这里: http : //developer.android.com/about/versions/lollipop.html#WebView
CrossWalk版本20及以上
CrossWalk将从版本20开始,停止对Android 4.0.X的支持。如果您确实需要在支持matrix中保留4.0.X,请不要升级。 我build议为Android 5.X或更高版本构build另一个APK,不再包含CrossWalk。 更多信息
Crosswalk v23是最后一个版本(EOL)
Crosswalk已经决定在2017年1月23日发布最后一个稳定版本。这结束了对Crosswalk的官方支持,并将错误修复等留给了社区。 更多信息在博客
注意!
我发现,运行我的移动混合应用程序在Crosswalk上的graphics性能要比依靠系统webview(在Android 5.x上的Sony Xperia ZL上testing,因此webview通过Play商店更新)更好。 为什么呢,我还不知道,也许Crosswalk在某些方面configurationWebview? 这需要进一步调查。
这看起来像一个有希望的select: 人行横道+cordova 。
优点:
- 使用Cordova API
- 使用Crosswalk API
- cordova将使用Crosswalk作为其网页视图
- Crosswalk不使用基于Chromium的Android webview
Github回购: https : //github.com/crosswalk-project/crosswalk-cordova-android 。
更新2014年的答案 : Android 4.4和更高版本默认使用Chrome浏览器 。 这是目前基于Chrome版本30。
一种select是启动Chrome浏览器并链接到相应的站点。
这不是一个很好的用户体验,但可能会让你有一些方法。
您可以检查并启动Chrome浏览器,其中包括以下内容:
String url = "http://www.totallyawesomeurl.com"; String packageName = "com.android.chrome"; Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); browserIntent.setPackage(packageName); browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); List<ResolveInfo> activitiesList = context.getPackageManager().queryIntentActivities( browserIntent, -1); if(activitiesList.size() > 0) { // Found the browser on the device, launch it context.startActivity(browserIntent); } else { // The browser isn't installed, so we should prompt the user to get Intent playStoreIntent = new Intent(Intent.ACTION_VIEW); playStoreIntent.setData(Uri.parse("market://details?id="+packageName)); playStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(playStoreIntent); }
值得注意的是,Chrome for Android仅适用于ICS设备及以上版本,因此您可能希望确保将minimumTargetSDK设置为14,并且可能会切换到Opera旧版Android,如果您的网站在Opera中使用了包名称“ com.opera.browser”
事实certificate,我的Javascript是错误的。 当我避免某些错误时,旧的浏览器可以正常工作。 我发现它能够加载Windows的古老版本的Safari。
我的问题是这样的:
var newValue = parseInt("030");
这个返回了24,因为“030”是8的基数,对不对?
我改变了事情,迫使基地,事情现在确定:
var newValue = parseInt("030", 10);