2016-09-30 87 views
7

由于谷歌已经宣布chromebook也支持“Android应用程序”,所以我也想支持我的应用程序在Chromebook上,尽管它运行良好,我需要解决的例外情况。如何以编程方式检测“Android应用程序”是在Chrome书籍还是在Android手机中运行

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

我在安卓开发人员网站中查询了Chromebook文档,但没有得到任何可以告诉您的应用程序在Chrome书籍环境中运行的API。从ARC Beta documentation


建议没有工作:

如果需要检查,如果您的应用程序在Chrome OS上运行,寻找android.os.Build.BRANDandroid.os.Build.MANUFACTURER

在华硕Chromebook上均返回谷歌

+0

完成;显然已经有一个标签。我删除了我的答案,并编辑了那里试过的问题。祝你好运。 – Xan

回答

7

最后我想出一个办法知道,如果应用程序在运行ARC:

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

任何人都可以使用chromebook确认这一点吗?你确定从Android应用到chromebook的最终本地集成将以相同的方式使用ARC吗? – TSGames

+1

@TSGames是的,我已确认它,它按预期工作。使用的设备:Google Pixel Chromebook – dex

+0

非常感谢! Upvoted :) – TSGames

0

另一种方法是Google uses in their own code检查Build.DEVICE与“_cheets”结束。我不知道这样的终端设备名称是一种长期策略还是快速解决方案,但除了dex的建议解决方案外,还值得一看。

FWIW,由于ARCWelder的方法已被弃用,并且此处尚未提供官方文档,因此我在此处的XDA论坛中也提供了started a discussion,供人们讨论哪些设备可用/不适用。

0

随着最新的SDK,你可以做

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

对于旧设备(与截至目前,全是 “老”,ARC-基于我相信),the official way是要做到:

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

“官方”方式已过时。例如最新的Pixelbook品牌是“google” – SILINIK

+0

@SILINIK在设备上可以使用“FEATURE_PC”吗? – Gabor

相关问题