我能检测到亚马逊平板电脑和其他设备吗?

5

我在我的项目中一直使用Google服务,但是亚马逊平板不支持Google服务,因此如果我想将应用程序发布到亚马逊商店,我需要删除Google服务。 我不想将项目分为“适用于Google Play”和“适用于亚马逊商店”。
我使用android.os.Build.MODEL获取设备名称,但我不确定它是否安全?
我能在项目中检测到亚马逊平板吗?

if(is Amazon) {
    //do something
}
else {
    //do something
}
3个回答

8

是的,您可以使用Build.MODEL和Build.MANUFACTURER。

根据Amazon文档,Build.MANUFACTURER始终返回“Amazon”,而Build.MODEL根据型号返回不同的字符串。

如果您不需要区分每个Amazon平板电脑,您可以只使用:

if (Build.MANUFACTURER.equals("Amazon")) {
    //we have an Amazon tablet
}
else {
    //some other device
}

如果您需要准确的设备信息,可以使用 Build.MODEL,例如:
  • Kindle Fire HDX 8.9 (3rd Gen)

    if (Build.MODEL.equals("KFAPWI")) {
        //WiFi version
    }
    else if (Build.MODEL.equals("KFAPWA")) {
        //WAN version
    }
    

    etc.


2
您可以使用..
String deviceName = android.os.Build.MODEL;
String deviceMan = android.os.Build.MANUFACTURER;

如需更多详情,请访问android.os.Build


0
我建议您检测Google Play是否已安装。因为一些自定义ROM也没有安装Google Play。所以请尝试使用以下代码行:
private static final String GooglePlayStorePackageNameOld = "com.google.market";
private static final String GooglePlayStorePackageNameNew = "com.google.vending";

public boolean serviceAvailable(Context ctx) {
    boolean googlePlayStoreInstalled= false;
    packageManager = ctx.getPackageManager();
    List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
    for (PackageInfo packageInfo : packages) {
        if (packageInfo.packageName.equals(GooglePlayStorePackageNameOld) ||
            packageInfo.packageName.equals(GooglePlayStorePackageNameNew)) {
            googlePlayStoreInstalled = true;
            break;
        }
    }
    return googlePlayStoreInstalled;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接