如何有条件地为Android应用程序使用特定于供应商的API?

时间:2013-01-06 00:36:45

标签: android api amazon ouya

Android应用程序商店提供特定于市场的API,如何构建有条件地使用特定于供应商的库的Android应用程序?例如,亚马逊提供自己的应用内购买和“GameCircle”API。 Google拥有自己的许可API,现在Ouya将拥有自己的IAP和硬件控制器API。

随着这些特定于供应商的SDK的激增,维护我的Android游戏的几个独立版本变得越来越困难。我想知道如何构建我的项目,以便我的代码可以在运行时检查各种API,如果可用则使用它们。像

这样的东西
if (amazon api is available)
  // Do some amazon-specific stuff

在构建时,我会链接所有库,然后将相同的通用应用程序上传到每个商店。

1 个答案:

答案 0 :(得分:5)

我目前正在使用它。

private boolean isAmazonInstall()
{
    PackageManager pm = getPackageManager();
    String installationSource = pm.getInstallerPackageName(getPackageName());
    if (installationSource != null && installationSource.startsWith("com.amazon"))
    {
                    return true;
    }
            return false;
}

据称,对于亚马逊安装,getInstallerPackageName的返回值为“com.amazon.venezia”。对于从Google Play安装的应用程序,结果为“com.android.vending”(虽然它曾经是“com.google.android.feedback”。手动APK安装返回null。

我无法找到这种方法有效的官方确认。但我找不到更好的方法。