检测是否从Google Play和Amazon vs Other下载了Android应用

时间:2013-03-11 21:08:30

标签: android google-play amazon-appstore

我知道这可能是一个远景,但有没有办法以编程方式检测应用程序是否托管在亚马逊应用商店和Google Play上?我想链接到从应用程序下载的应用程序商店,如果可以避免,我宁愿没有两个不同的APK,只有这个区别。

2 个答案:

答案 0 :(得分:23)

就在最近,Amazon Appstore会返回PackageManager.getInstallerPackageName()

的合理值
PackageManager pm = context.getPackageManager();
String installerPackageName = pm.getInstallerPackageName(context.getPackageName());

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

见这里: https://forums.developer.amazon.com/forums/thread.jspa?threadID=680

此应用关联率的示例:

Google Play -

  

市场://细节ID = PACKAGANAME

亚马逊商店

  

http://www.amazon.com/gp/mas/dl/android?p=PACKAGENAME

  

AMZN://应用/机器人P = com.amazon.mp3

答案 1 :(得分:1)

最简单的方法是在亚马逊和Google Play之间使用不同的版本代码或名称。然后,您可以使用PackageManager.getPackageInfo检索这些值,并从那里选择适当的应用商店链接。

示例:将所有亚马逊版本名称后缀为“.65”,即1.0.65。然后使用

public boolean isAmazon(Context context) {
    String versionName = "";
    try {
        versionName = context.getPackageManager().getPackageInfo(
            getPackageName(), 0).versionName;
    } catch (NameNotFoundException e) {
        // Can't find itself...
    }
    return versionName.endsWith(".65");
}