18

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

4

2 回答 2

26

就在最近,亚马逊应用商店返回了合理的值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

评价此应用链接的示例:

谷歌播放-

market://details?id=PACKAGANAME

亚马逊商店

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

或者

amzn://apps/android?p=com.amazon.mp3

于 2013-06-09T09:52:33.950 回答
1

最简单的方法是在 Amazon 和 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");
}
于 2013-03-11T21:22:10.423 回答