我需要区分我的Phonegap Android应用程序是否正在运行
A)通过USB调试模式在模拟器或手机中
B)通常在电话中
甚至可能吗?你知道诀窍吗?我需要这个在开发和产品之间自动配置切换......谢谢。
答案 0 :(得分:1)
是的,某些平台允许在运行时进行包内省。
在Android上,本地库是PackageManager,链接到docs。无论您是否可以从界面获得所需信息(希望)都会记录在案
目前没有插件或API可以从phonegap javascript环境中访问此信息。但是,这很容易实现。
我可能愿意整理这样一个插件。它会相对简单并且可能有用。或者我可以帮助您完成整个过程。
修改强> 是的,这些信息是可用的,这是一个片段:
if ((ctx.getPackageManager().getPackageInfo(
ctx.getPackageName(), 0).applicationInfo.flags &
ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
//Debug and development mode
BASE_SERVICE_URL = "http://qa.example.com";
}
上找到了上面的代码
答案 1 :(得分:0)
使用Ace plugin,您可以调用任意API。因此,Lorenzo的代码可以用JavaScript编写,如下所示:
var ctx = ace.android.getContext();
ctx.invoke("getPackageManager", function (pm) {
ctx.invoke("getPackageName", function (name) {
pm.invoke("getPackageInfo", name, 0, function (info) {
info.getField("applicationInfo", function (appInfo) {
ace.NativeObject.getField("android.content.pm.ApplicationInfo", "FLAG_DEBUGGABLE", function(DEBUGGABLE) {
appInfo.getField("flags", function (flags) {
if (flags & DEBUGGABLE != 0) {
// Debug and development mode
BASE_SERVICE_URL = "http://qa.example.com";
}
});
});
});
});
});
});