如果在Chrome book或Android手机中运行“Android App”,将以编程方式进行检测

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

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

我已经在Android开发人员网站上查看了Chromebook文档,但是没有得到任何这样的API来告诉您的应用程序正在Chrome书籍环境中运行。


来自ARC Beta文档的build议无效:

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

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

Solutions Collecting From Web of "如果在Chrome book或Android手机中运行“Android App”,将以编程方式进行检测"

最后,我想出了一个方法来知道在ARC中运行的应用程序:

 context.getPackageManager().hasSystemFeature("org.chromium.arc.device_management"); 

Google在自己的代码中使用的另一种方法是检查Build.DEVICE是否以“ _cheets ”结尾。 我不知道这样的terminal设备名称是一种长期策略还是快速解决方法,但除了dex的build议解决scheme之外,还值得一看。

FWIW,因为ARCWelder的方法已经被弃用,并且还没有关于这个的官方文档,我还在XDA论坛上讨论了人们讨论什么在各种设备上工作/不工作的问题。

有了最新的SDK,你可以做到

 PackageManager pm = context.getPackageManager(); if (pm.hasSystemFeature(PackageManager.FEATURE_PC)) // it's a chromebook 

对于较老的设备(至今为止,都是“老”,我认为是基于ARC的), 官方的做法是:

 if (Build.BRAND != null && Build.BRAND.equals("chromium") && Build.MANUFACTURER.equals("chromium")) // it's a chromebook