Android应用程序如何检测哪些商店安装了它?

时间:2013-07-13 11:33:56

标签: android google-play samsung-mobile amazon-appstore

我在谷歌播放,亚马逊,三星应用程序中有应用程序,我打算上传到其他商店。 我不希望为每个商店编译单独的构建。 如果相同的应用程序提交到不同的商店,有没有办法检测商店安装的应用程序?

3 个答案:

答案 0 :(得分:15)

您必须为每个额外的商店扩展此功能,但这应该可以帮助您开始

if (PackageManager.getInstallerPackageName().equals("com.android.vending")
{
//do google things
}
else if (PackageManager.getInstallerPackageName().equals("com.amazon.venezia")
{
//do amazon things
}

答案 1 :(得分:11)

我在MainActivity中检测到这样的安装程序:

//is installed via amazon, google?
String installerId = null;
try {
    installerId = this.getPackageManager().getInstallerPackageName(this.getPackageName());
} catch (Exception e) {
    //just in case...
}

if ("com.amazon.venezia".equals(installerId)) {
    // amazon 
} else if ("com.android.vending".equals(installerId)) {
    // google
} else {
    // others & unknown ones
}

我在上一个应用程序中对此进行了测试,并在googe play,amazon store和slideme.org商店中通过了应用程序提交

更新:看起来有时会出现安装程序包名称​​ com.google.android.feedback ,这似乎与谷歌商店有关,虽然我已经看到了在我的测试应用程序的谷歌分析中, com.android.vending 更频繁。因此,如果您想要使其更加精确,您也应该处理此安装程序包。 另请注意,某些市场(如slideme.org)似乎根本没有设置软件包安装程序ID。

另请参阅:Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?

答案 2 :(得分:3)

除非您进行单独的构建。但是使用好的maven设置/ ant脚本,您可以轻松地自动完成此过程。