检查下载源以更改 Android 应用程序中的 API URL
Posted
技术标签:
【中文标题】检查下载源以更改 Android 应用程序中的 API URL【英文标题】:Check download source to change API URL in Android App 【发布时间】:2014-07-23 20:59:35 【问题描述】:我正在将 ios 应用程序移植到 android,我需要根据它是通过 USB 插入、下载为 .apk 还是通过 Google Play 商店安装来更改 API URL。
这样我就可以使用我的本地开发 API、暂存 API,然后显然是公共生产/发布 API。
我曾经检查过应用程序是否通过 Eclipse 运行:
if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 )
debug_value = "1";
但我需要检查测试/发布之间的区别。
在 iOS 中,我刚刚测试了 DEBUG
预处理器宏,并为 ADHOC
添加了一个。
【问题讨论】:
【参考方案1】:如果 *.apk 和 Google Play 是相同的版本,我不相信你能看出它们之间的区别。
另一方面,如果您使用 Gradle,则可以直接在名称中添加关键字,以便稍后查看。
这是我的应用程序中的一个示例:
buildTypes
debug
versionNameSuffix = "-DEBUG"
release
signingConfig signingConfigs.release
这允许我们检查应用程序:
getPackageManager()
.getPackageInfo(getPackageName(), 0)
.versionName
.contains("DEBUG");
【讨论】:
【参考方案2】:我发现我可以使用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 文档:
http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName(java.lang.String)
关于 SO 的类似问题:
getInstallerPackageName returns null Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store? Detect if an Android app was downloaded from Google Play vs Amazon vs Other【讨论】:
以上是关于检查下载源以更改 Android 应用程序中的 API URL的主要内容,如果未能解决你的问题,请参考以下文章
运行应用程序与应用更改 android studio 2.3