两个二进制文件将是最强大的方法,但同时检查 Build.MANUFACTURER 和 installerName 应该可以让你非常接近(尽管假设如果用户在他们的非 Kindle 上安装了旧版本的安装程序,你想检查 Amazon AppStore设备且未更新 installerName 可能会报告 null)
boolean isAmazonDevice = Build.MANUFACTURER.equalsIgnoreCase("amazon");
final Application application = getApplication();
String installerName = application.getPackageManager().getInstallerPackageName(application.getPackageName());
boolean fromAmazonStore = installerName != null && installerName.equalsIgnoreCase("com.amazon.venezia");
然后检查以下值:
isAmazonDevice || fromAmazonStore
应该可以在很长一段时间内为您提供所需的东西。
这可能会造成混淆的一种情况是,如果您正在旁加载您的 apk 进行测试 - 在这种情况下,它不会有正确的 InstallerPackageName。您可以通过使用以下方式侧载 apk 来伪造它:
adb install -i com.amazon.venezia APK_NAME