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
andandroid.os.Build.MANUFACTURER
.
Both return google on an ASUS Chromebook.
You can download Android apps from the Google Play Store app and use them on your Chromebook. Currently, the Google Play Store is only available for some Chromebooks.
The Chrome OS has taken advantage of recent work by Docker and other cloud containers to give Chromebooks Android-app compatibility. The full Android framework is implemented in a Linux container that isolates Android from the rest of the Chrome OS and apps in a sandbox.
Connect your Chromebook to Wi-Fi. Settings . At the bottom left, select About ChromeOS. Under "Google ChromeOS," you'll find which version of the Chrome operating system your Chromebook uses.
Finally I figure out a way to know if app in running in ARC:
context.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
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.
Update 8/26/20 -- As of 7 months ago, the source has been moved around from FormFactors.java
to FeatureSupport.java
. If you were looking for where it went- here it the code as of today.
public static boolean isArc() { return (Build.DEVICE != null && Build.DEVICE.matches(".+_cheets|cheets_.+")); }
The test remains the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With