How to detect programmatically if “Android App” is running in chrome book or in Android phone

折月煮酒 提交于 2019-11-27 03:55:15

问题


Since Google has announced that chromebook also support "Android Application" so I also wanted to support my app on chromebook although it is running fine with few exception which I need to fix.

I want to write code in such a way that that is will execute only for chromebook and will not execute for android phones and tablet.

I have check with Chromebook documentation in android developer site, I didn't get any such API which tell that your app is running in chrome book environment.


Suggestion from ARC Beta documentation did not work:

If you need to check if your app is running on Chrome OS, look for chromium as the android.os.Build.BRAND and android.os.Build.MANUFACTURER.

Both return google on an ASUS Chromebook.


回答1:


Finally I figure out a way to know if app in running in ARC:

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



回答2:


Another method Google uses in their own code (updated link) is to check if Build.DEVICE ends with "_cheets". I don't know if ending device names like this is some kind of long-term strategy or a fast workaround, but it's also worth a look in addition to dex's proposed solution.

FWIW, since ARCWelder's method is deprecated and there's no official documentation on this (yet), I've also started a discussion in the XDA forums here for people to discuss what works/doesn't work on various devices.

Update 5/18: Looks like the code above was moved and updated, so Google's new ARC check as of May 2018 is here, particularly in this bit:

... } else if (Build.DEVICE != null && Build.DEVICE.matches(ARC_DEVICE_PATTERN)) {
  mFormFactor = FORM_FACTOR_ARC;
} else { ...

where ARC_DEVICE_PATTERN is defined as

private static final String ARC_DEVICE_PATTERN = ".+_cheets|cheets_.+";

So it's not just a device ending with _cheets. It can start with cheets_ as well.




回答3:


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


来源:https://stackoverflow.com/questions/39784415/how-to-detect-programmatically-if-android-app-is-running-in-chrome-book-or-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!