Android应用程序商店提供特定于市场的API,如何构建有条件地使用特定于供应商的库的Android应用程序?例如,亚马逊提供自己的应用内购买和“GameCircle”API。 Google拥有自己的许可API,现在Ouya将拥有自己的IAP和硬件控制器API。
随着这些特定于供应商的SDK的激增,维护我的Android游戏的几个独立版本变得越来越困难。我想知道如何构建我的项目,以便我的代码可以在运行时检查各种API,如果可用则使用它们。像
这样的东西if (amazon api is available)
// Do some amazon-specific stuff
在构建时,我会链接所有库,然后将相同的通用应用程序上传到每个商店。
答案 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。
我无法找到这种方法有效的官方确认。但我找不到更好的方法。