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

时间:2014-07-25 10:58:36

标签: android cordova configuration

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

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

B)通常在电话中

甚至可能吗?你知道诀窍吗?我需要这个在开发和产品之间自动配置切换......谢谢。

2 个答案:

答案 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";
}

我在MOBIARCH BLOG

上找到了上面的代码

答案 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";
                        }
                    });
                });
            });
        });
    });
});