Phonegap:如何检测android应用程序在开发模式下运行

Phonegap:如何检测android应用程序在开发模式下运行,android,cordova,configuration,Android,Cordova,Configuration,我需要区分我的Phonegap Android应用程序是否正在运行 A) 通过USB调试模式在模拟器或手机中 B) 通常在电话里 有可能吗?你知道什么把戏吗?我需要这个在devel和prod之间自动切换配置。。。谢谢。是的,有些平台允许在运行时进行包内省 在Android上,本机库是链接到文档的。你是否能从界面上得到你需要的信息(希望)会被记录下来 目前没有从phonegap javascript环境访问此信息的插件或api。然而,这很容易实现 我可能愿意组装这样一个插件。这将是相对简单和潜在的

我需要区分我的Phonegap Android应用程序是否正在运行

A) 通过USB调试模式在模拟器或手机中

B) 通常在电话里


有可能吗?你知道什么把戏吗?我需要这个在devel和prod之间自动切换配置。。。谢谢。

是的,有些平台允许在运行时进行包内省

在Android上,本机库是链接到文档的。你是否能从界面上得到你需要的信息(希望)会被记录下来

目前没有从phonegap javascript环境访问此信息的插件或api。然而,这很容易实现

我可能愿意组装这样一个插件。这将是相对简单和潜在的有用。或者我可以帮你完成这个过程

编辑 是的,此信息可用,下面是一个片段:

if ((ctx.getPackageManager().getPackageInfo(
    ctx.getPackageName(), 0).applicationInfo.flags & 
    ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
    //Debug and development mode
    BASE_SERVICE_URL = "http://qa.example.com";
}
我在

上找到了上面的代码,您可以使用调用任意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";
                        }
                    });
                });
            });
        });
    });
});