检查下载源以更改Android App中的API URL

时间:2014-06-03 13:35:53

标签: java android ios flags ad-hoc-distribution

我正在将iOS应用移植到Android,我需要更改API网址,具体取决于它是通过USB插入,是以.apk下载还是通过Google Play商店安装。

这样我就可以使用我的本地开发API,一个临时API,然后显然是公共生产/发布API。

我曾经常常检查应用程序是否通过Eclipse运行:

if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) {
    debug_value = "1";
}

但我需要检查测试/发布之间的区别。

在iOS中,我刚刚测试了DEBUG预处理器宏,并为ADHOC添加了一个。

2 个答案:

答案 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文档:

http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName(java.lang.String)

关于SO的类似问题: