Java 检查下载源以更改Android应用程序中的API URL
我正在将一个iOS应用程序移植到Android,我需要更改API URL,具体取决于它是通过USB插入的、是作为.apk下载的还是通过Google play store安装的 这样我就可以使用我的本地开发API,一个登台API,然后显然是公共生产/发布API 我曾经检查应用程序是否通过Eclipse运行:Java 检查下载源以更改Android应用程序中的API URL,java,android,ios,flags,ad-hoc-distribution,Java,Android,Ios,Flags,Ad Hoc Distribution,我正在将一个iOS应用程序移植到Android,我需要更改API URL,具体取决于它是通过USB插入的、是作为.apk下载的还是通过Google play store安装的 这样我就可以使用我的本地开发API,一个登台API,然后显然是公共生产/发布API 我曾经检查应用程序是否通过Eclipse运行: if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) { debug_value = "1"; }
if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) {
debug_value = "1";
}
但我需要检查测试/发布之间的差异
在iOS中,我刚刚测试了
DEBUG
预处理器宏,并为ADHOC
添加了一个宏。如果*.apk和Google Play是同一版本,我相信你看不出它们之间的区别
另一方面,如果您使用Gradle,那么在名称中添加关键字是非常直接的,您可以稍后检查
这是我的应用程序中的一个示例:
buildTypes {
debug {
versionNameSuffix = "-DEBUG"
}
release {
signingConfig signingConfigs.release
}
}
这允许我们在应用程序上检查:
getPackageManager()
.getPackageInfo(getPackageName(), 0)
.versionName
.contains("DEBUG");
我发现我可以使用
getInstallerPackageaName()
方法检查它是否是通过应用程序(如Google Play)安装的,或者它将返回NULL
我使用过以下代码(这是Cordova应用程序):
我可能应该扩展它来专门检查商店名称,但我只是从这个开始,关于Google Play将返回的安装程序包名称似乎存在一些差异(请参阅下面列出的问题)
适用于getInstallerPackageName()
的Android文档:
关于这方面的类似问题:
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
}