我需要區分,如果我的PhoneGap的Android應用程序在模擬器或手機通過USB調試模式PhoneGap的:如何檢測的Android應用程序開發模式下運行
B)通常在手機上運行
A)
這有可能嗎?你知道有什麼竅門嗎?我需要這個在devel和prod之間進行自動配置切換...謝謝。
我需要區分,如果我的PhoneGap的Android應用程序在模擬器或手機通過USB調試模式PhoneGap的:如何檢測的Android應用程序開發模式下運行
B)通常在手機上運行
A)
這有可能嗎?你知道有什麼竅門嗎?我需要這個在devel和prod之間進行自動配置切換...謝謝。
是的,有些平臺允許在運行時進行封裝內省。
在Android上,本機庫爲PackageManager,鏈接到文檔。是否可以從界面獲得所需的信息(希望)可以記錄到
目前沒有插件或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
使用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";
}
});
});
});
});
});
});