如何以编程方式检测“Android App”是否在chrome book或Android手机中运行

时间:2016-09-30 05:39:35

标签: android chromebook androidappsonchromeos

由于谷歌已经宣布chromebook也支持“Android应用程序”,所以我也想在chromebook上支持我的应用程序,虽然它运行正常,但我需要修复一些例外。

我想以这样的方式编写代码,即只对chromebook执行代码,并且不会为Android手机和平板电脑执行代码。

我已经在Android开发者网站上查看了Chromebook文档,我没有得到任何这样的API,告诉您的应用在Chrome图书环境中运行。

来自ARC Beta documentation的建议不起作用:

  

如果您需要检查您的应用是否在Chrome操作系统上运行,请查看 chrome 作为android.os.Build.BRANDandroid.os.Build.MANUFACTURER

两者都在华硕Chromebook上返回谷歌

3 个答案:

答案 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_PATTERNdefined

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