dex*_*dex 14 android chromebook androidappsonchromeos
由于谷歌已宣布chromebook也支持"Android应用程序",所以我也想在chromebook上支持我的应用程序,虽然它运行良好,但我需要修复一些例外.
我想以这样的方式编写代码,即只对chromebook执行,并且不会为Android手机和平板电脑执行代码.
我在Android开发者网站上查看了Chromebook文档,我没有得到任何这样的API,告诉你的应用程序在chrome book环境中运行.
ARC Beta文档中的建议不起作用:
如果您需要检查您的应用是否在Chrome操作系统上运行,请查找铬作为
android.os.Build.BRAND和android.os.Build.MANUFACTURER.
两者都在华硕Chromebook上返回谷歌.
dex*_*dex 16
最后,我找到了一种方法来了解应用程序是否在ARC中运行:
context.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
Run Code Online (Sandbox Code Playgroud)
谷歌在他们自己的代码中使用的另一种方法(更新链接)是检查是否Build.DEVICE以“ _cheets”结尾。我不知道像这样结束设备名称是某种长期策略还是快速解决方法,但除了 dex 提出的解决方案外,它也值得一看。
FWIW,由于 ARCWelder 的方法已被弃用,并且(还)没有关于此的官方文档,我还在XDA 论坛上开始了讨论,供人们讨论哪些在各种设备上有效/无效。
更新 5/18: 看起来上面的代码被移动和更新,所以谷歌在 2018 年 5 月的新 ARC 检查在这里,特别是在这一点:
... } else if (Build.DEVICE != null && Build.DEVICE.matches(ARC_DEVICE_PATTERN)) {
mFormFactor = FORM_FACTOR_ARC;
} else { ...
Run Code Online (Sandbox Code Playgroud)
其中ARC_DEVICE_PATTERN被定义为
private static final String ARC_DEVICE_PATTERN = ".+_cheets|cheets_.+";
Run Code Online (Sandbox Code Playgroud)
所以它不仅仅是一个以_cheets. 它也可以开始cheets_。
更新20年8月26日-截至7个月前,源已经从搬来搬去FormFactors.java到FeatureSupport.java。如果您正在寻找它的去向 -此处是截至今天的代码。
public static boolean isArc() {
return (Build.DEVICE != null && Build.DEVICE.matches(".+_cheets|cheets_.+"));
}
Run Code Online (Sandbox Code Playgroud)
测试保持不变。