Могу ли я обнаружить Amazon tablet и другие?


Я использую сервис Google в своем проекте,но планшеты Amazon не поддерживают сервис Google, поэтому, если я хочу опубликовать приложение в Amazon Store, мне нужно удалить сервис Google. Я не хочу делить проект на "для Google Play" и "для Amazon Store".
Я получаю имя устройства, используя android.os.Build.MODEL, но я не уверен, что это безопасно?
Могу ли я обнаружить планшеты Amazon в project?

if(is Amazon) {
    //do something
}
else {
    //do something
}
3 5

3 ответа:

Да, вы можете использовать Build.Модель и сборка.ПРОИЗВОДИТЕЛЬ.

В соответствии сдокументацией Amazon , Сборка.Производитель всегда возвращает "Амазонку", причем сборки.Модель возвращает различные строки, в зависимости от модели.

Если вам не нужно различать каждый планшет Amazon, вы можете просто использовать:

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

Если вам нужно точно знать, какое это устройство, вы можете использовать Build.Модель, например:

  • Kindle Fire HDX 8.9 (3-й Gen)

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

    И т. д.

Вы можете использовать ..

String deviceName = android.os.Build.MODEL;
String deviceMan = android.os.Build.MANUFACTURER;

Для получения более подробной информации, пожалуйста, посетите андроид.ос.Построить

Я бы предложил вам определить, установлен ли google Play. Потому что несколько пользовательских дисков также не имеют встроенного 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;
}