为了加速开发,我们的团队已经习惯于直接在Chrome中测试大部分phonegap实现(因为它几乎全部是Javascript)。但是我们想要在Phonegap提供的ondeviceready回调中运行某些代码(或者只在浏览器中的document.ready中运行)。如果我们想在两种情况下调用不同的代码,我们如何区分这两种情况?如何区分PhoneGap应用程序和本机浏览器?
2
A
回答
1
我们遵循相同的方法,并有同样的问题。以下是我们如何解决Android的问题(应使用WebKit浏览器,例如iOS)。
的理念是:
- 创建一个Java类,它说的PhoneGap是积极的。
- 将其添加到浏览器中的全局对象列表中。
- 编写封装了支票的JavaScript包装器。
现在有些代码。
Java类:
public class MyPhoneGap {
public boolean isActive() {
return true;
}
}
注册这个类的一个实例与浏览器:
public class MyActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///android_asset/www/index.html");
this.appView.getSettings().setJavaScriptEnabled(true);
this.appView.addJavascriptInterface(new MyPhoneGap(), "MyPhoneGap");
}
}
JavaScript包装:
My.PhoneGap = {
active : null,
isActive : function() {
if (!My.Util.Type.isBoolean(My.PhoneGap.active)) {
if (My.Util.Type.exists(window.MyPhoneGap)) {
if (window.MyPhoneGap.isActive()) {
My.PhoneGap.active = true;
} else {
My.PhoneGap.active = false;
}
} else {
My.PhoneGap.active = false;
}
}
return My.PhoneGap.active;
}
};
用法:
if (My.PhoneGap.isActive()) {
// Rely on PhoneGap APIs
} else {
// Use some mock/default/dummy impl
}
最后一件事:在Chrome中开发/测试非常方便,但请在真实设备上测试。性能/ API可靠性的差异是巨大的不同。
1
您可以检查是否装置在JavaScript
/* are we running on device or in a browser? */
this.isDevice = (typeof(device) != 'undefined');
/* if the device is not defined we assume we in a browser */
if(!this.isDevice) {
... browser code here ...
}
相关问题
- 1. 在phonegap应用程序中使用浏览器本地存储
- 2. 如何区别BB浏览器和Webworks应用程序
- 3. 如何从phonegap应用程序导航到Firefox浏览器
- 4. 从浏览器打开本机应用程序(不是手机)
- 5. 如何检测黑莓应用程序中的本机浏览器关机?
- 6. 从浏览器运行本机Java应用程序
- 7. 区分iPhone网络浏览器和iPhone应用程序用户代理
- 8. 在手机浏览器或PhoneGap应用程序之间进行检测
- 9. 在浏览器中测试PhoneGap + AJAX应用程序
- 10. PhoneGap建立在应用程序浏览器未加载
- 11. 如何从j2me应用程序调用本地浏览器
- 12. 结合浏览器应用程序和桌面应用程序
- 13. 如何在React本机中打开应用程序内浏览器窗口
- 14. 使用phonegap调用本机文件浏览器
- 15. 谷歌登录 - 在应用程序浏览器vs手机浏览器
- 16. 如何将浏览器和我的web应用程序
- 17. 如何从外部链接的浏览字段应用程序打开黑莓本机浏览器
- 18. Dashcode区分iPad和iPhone浏览器
- 19. 启动浏览器(Safari浏览器)我的应用程序
- 20. 浏览器到Android应用程序到浏览器
- 21. 仅打开浏览器的应用程序浏览器
- 22. 如何防止在Web浏览器中关闭XBAP浏览器应用程序
- 23. 谷歌服务器如何区分浏览器和HtmlUnit?
- 24. 如何使用phonegap成为整个本机ios应用程序的一部分
- 25. 如何在手机本身上调试phonegap android应用程序
- 26. Android应用程序中的Android本机浏览器和WebView在功能上有什么区别?
- 27. 使用PhoneGap和PHP的iPhone本机应用程序
- 28. 浏览器“帮助应用程序”跨浏览器和操作系统
- 29. 如何将Phonegap Inapp浏览器内容保存到父应用程序以供脱机查看
- 30. MVVM VS WPF浏览器应用程序?
。出于好奇,不确定的,是否有你用来代替PhoneGap的插件addJavascriptInterface任何理由? – 2012-03-03 20:14:20
@WaynnLue PhoneGap插件是异步的,这使事情变得更加复杂。 – lexicore 2012-03-04 09:43:50