由于谷歌已经宣布chromebook也支持“Android应用程序”,所以我也想在chromebook上支持我的应用程序,虽然它运行正常,但我需要修复一些例外。
我想以这样的方式编写代码,即只对chromebook执行代码,并且不会为Android手机和平板电脑执行代码。
我已经在Android开发者网站上查看了Chromebook文档,我没有得到任何这样的API,告诉您的应用在Chrome图书环境中运行。
来自ARC Beta documentation的建议不起作用:
如果您需要检查您的应用是否在Chrome操作系统上运行,请查看 chrome 作为
android.os.Build.BRAND
和android.os.Build.MANUFACTURER
。
两者都在华硕Chromebook上返回谷歌。
答案 0 :(得分:15)
最后,我想出了一种方法来了解应用程序是否在ARC中运行:
context.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
答案 1 :(得分:4)
另一种方法Google uses in their own code(已更新link)是检查Build.DEVICE
是否以“_cheets
”结尾。我不知道这样的终端设备名称是否是某种长期策略或快速解决方案,但除了dex提出的解决方案之外,它还值得一看。
FWIW,因为ARCWelder的方法已被弃用,而且还没有关于此的官方文档,我还在这里的XDA论坛中started a discussion,供人们讨论在各种设备上有效/无效的内容。
更新5/18:看起来上面的代码已被移动和更新,因此截至2018年5月Google的新ARC检查为here,特别是在此位:
... } else if (Build.DEVICE != null && Build.DEVICE.matches(ARC_DEVICE_PATTERN)) {
mFormFactor = FORM_FACTOR_ARC;
} else { ...
其中ARC_DEVICE_PATTERN
为defined为
private static final String ARC_DEVICE_PATTERN = ".+_cheets|cheets_.+";
所以它不仅仅是以_cheets
结尾的设备。它也可以从cheets_
开始。
答案 2 :(得分:1)
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_PC))
// it's a chromebook