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

标签 android api amazon ouya

Android 应用商店提供特定于市场的 API,我如何构建有条件地使用供应商特定库的 Android 应用?例如,Amazon 提供了他们自己的应用内购买和“GameCircle”API。 Google 拥有自己的许可 API,现在 Ouya 将拥有自己的 IAP 和硬件 Controller API。

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

if (amazon api is available)
  // Do some amazon-specific stuff

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

最佳答案

我目前正在使用它。

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。

我无法找到官方确认此方法有效。但我一直没能找到任何更好的方法。

关于android - 如何有条件地为 Android 应用程序使用特定于供应商的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14178049/

相关文章:

android - PreferencesActivity - 自定义复选框、单选按钮等的样式

android - 如何检测建筑物中是否有智能手机?

>0 文件的 solr 健康检查

安卓工作室 : how to create a second debug build type

android - 如何在同一 LinearLayout 中使高程投影到顶 View 上

c# - 是否有用于 VMware VIX API 的 C# 包装器?

Android - API 级别 < 11 的 fragment API

ruby-on-rails - Rails 中的二维码生成器

iphone - 亚马逊网络服务问题。我应该为网络服务付费吗?

xpath - 谷歌电子表格中的亚马逊价格