我正在将iOS应用移植到Android,我需要更改API网址,具体取决于它是通过USB插入,是以.apk下载还是通过Google Play商店安装。
这样我就可以使用我的本地开发API,一个临时API,然后显然是公共生产/发布API。
我曾经常常检查应用程序是否通过Eclipse运行:
if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) {
debug_value = "1";
}
但我需要检查测试/发布之间的区别。
在iOS中,我刚刚测试了DEBUG
预处理器宏,并为ADHOC
添加了一个。
答案 0 :(得分:0)
我不相信你可以看到* .apk和Google Play之间的区别,如果它们是实际相同的版本。
另一方面,如果您正在使用Gradle,则可以直接在名称中添加关键字,以便稍后查看。
这是我的应用程序中的一个示例:
buildTypes {
debug {
versionNameSuffix = "-DEBUG"
}
release {
signingConfig signingConfigs.release
}
}
这允许我们检查应用程序:
getPackageManager()
.getPackageInfo(getPackageName(), 0)
.versionName
.contains("DEBUG");
答案 1 :(得分:0)
我发现我可以使用getInstallerPackageaName()
方法检查是否已通过应用程序(如Google Play)安装,或者它会返回NULL
我已使用此代码(它是Cordova应用程序):
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
String installer = packageManager.getInstallerPackageName( "com.myapp" );
if ( installer == null ) {
// not installed via application (like Google Play)
} else {
// installed via application
}
我应该将其扩展为专门检查商店名称,但我刚刚开始这样做,似乎与Google Play将返回的安装程序包名称存在一些差异(请参阅下面列出的问题)
getInstallerPackageName()
的Android文档:
关于SO的类似问题: