如何以编程方式检测“如果”;安卓应用程序;是在chrome book中运行还是在Android手机中运行

如何以编程方式检测“如果”;安卓应用程序;是在chrome book中运行还是在Android手机中运行,android,chromebook,androidappsonchromeos,Android,Chromebook,Androidappsonchromeos,由于谷歌已经宣布chromebook也支持“Android应用程序”,所以我也想在chromebook上支持我的应用程序,尽管它运行良好,但我需要修复的例外很少 我想以这样的方式编写代码,即只对chromebook执行,而不会对android手机和平板电脑执行 我已经查阅了android开发者网站上的Chromebook文档,我没有得到任何这样的API,它告诉我你的应用程序正在Chromebook环境中运行 来自的建议不起作用: 如果您需要检查您的应用程序是否在Chrome操作系统上运行,请查

由于谷歌已经宣布chromebook也支持“Android应用程序”,所以我也想在chromebook上支持我的应用程序,尽管它运行良好,但我需要修复的例外很少

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

我已经查阅了android开发者网站上的Chromebook文档,我没有得到任何这样的API,它告诉我你的应用程序正在Chromebook环境中运行


来自的建议不起作用:

如果您需要检查您的应用程序是否在Chrome操作系统上运行,请查找Chrome作为
android.OS.Build.BRAND
android.OS.Build.MANUFACTURER


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

最后,我找到了一种方法来知道应用程序是否在ARC中运行:

context.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
另一种方法(更新)是检查
Build.DEVICE
是否以“
\u cheets
”结尾。我不知道这样结束设备名称是一种长期策略还是一种快速解决方案,但除了dex提出的解决方案之外,它也值得一看

FWIW,由于Arc焊工的方法已被弃用,而且目前还没有关于这方面的正式文档,因此我也在XDA论坛上讨论了在各种设备上哪些有效/无效

更新5/18:看起来上面的代码被移动和更新了,所以谷歌截至2018年5月的新ARC检查是,特别是在这一点上:

... } else if (Build.DEVICE != null && Build.DEVICE.matches(ARC_DEVICE_PATTERN)) {
  mFormFactor = FORM_FACTOR_ARC;
} else { ...
其中,
电弧装置模式
如下

因此,它不仅仅是以
\u cheets
结尾的设备。它也可以从奶酪开始

更新8/26/20——7个月前,源代码已从
FormFactors.java
迁移到
FeatureSupport.java
。如果你在寻找它去了哪里-


测试保持不变。

完成;显然已经有标签了。我删除了我的答案,并将尝试的内容编辑到问题中。祝你好运。有人能用chromebook来证实这一点吗?你确定Android应用程序与chromebook的最终本机集成将以同样的方式使用ARC吗?@TSGames是的,我已经确认了,它正在按预期工作。使用设备:谷歌像素Chromebook谢谢!我正在海尔E11 Chromebook中试用,并且也可以使用:)@Gabor是的,我使用的是旧像素。我不确定谷歌最近推出的新谷歌像素chromebook。我正在使用chrome操作系统和Kiosks模式,我已经应用了上面的所有代码,但无法找到它是否是crome box。请帮帮我。我需要打开chrome os kiosk模式的应用程序内键盘。注:-我不使用电弧焊机“官方”方式已过时。例如,对于最新的Pixelbook,品牌是“谷歌”功能,而PC则没有PackageManager@uday-nayak你用哪个Chromebook试过,它运行的是什么Android操作系统版本?你可能需要关注一下,是否有任何方法可以对如何指示Chromebook处于平板模式(翻转)进行同样的思考。因为chromebook在平板电脑模式下的表现似乎与普通平板电脑一样
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_PC)) 
   // it's a chromebook
  public static boolean isArc() {
    return (Build.DEVICE != null && Build.DEVICE.matches(".+_cheets|cheets_.+"));
  }
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_PC)) 
   // it's a chromebook