Как распознать, что CyanogenMod есть на доске? - PullRequest
4 голосов
/ 31 марта 2011

Я проверил много полей из http://developer.android.com/reference/android/os/Build.html.

Однако я не могу получить четкую информацию о том, что конкретное устройство использует CyanogenMod.

это то, что я получаю:

NETWORK_TYPE="0"
SDK_INT="10"
CODENAME="REL"
INCREMENTAL="eng.android.20110308.014205"
RELEASE="2.3.3"
SDK="10"
Build.BOARD=bravo
BOOTLOADER=0.93.0001
BRAND=htc_wwe
CPU_ABI=armeabi-v7a
CPU_ABI2=armeabi
DEVICE=bravo
DISPLAY=GRI40
FINGERPRINT=htc_wwe/htc_bravo/bravo/bravo:2.2/FRF91/226611:user/release-keys
HARDWARE=bravo
HOST=giulio-desktop
ID=FRF91
MANUFACTURER=HTC
MODEL=HTC Desire
PRODUCT=htc_bravo
RADIO=unknown
TAGS=release-keys
TIME=0
TYPE=userdebug
USER=android

NETWORK_TYPE="0"
SDK_INT="10"
CODENAME="REL"
INCREMENTAL="eng.shade.20110307.195429"
RELEASE="2.3.3"
SDK="10"
Build.BOARD=mahimahi
BOOTLOADER=0.35.0017
BRAND=google
CPU_ABI=armeabi-v7a
CPU_ABI2=armeabi
DEVICE=passion
DISPLAY=GRI40
FINGERPRINT=google/passion/passion:2.3.3/GRI40/102588:user/release-keys
HARDWARE=mahimahi
HOST=toxygene
ID=GRI40
MANUFACTURER=HTC
MODEL=Nexus One
PRODUCT=passion
RADIO=unknown
TAGS=test-keys
TIME=0
TYPE=user
USER=shade

Ответы [ 5 ]

6 голосов
/ 05 декабря 2012

PackageManager.hasSystemFeature("com.cyanogenmod.android") будет более последовательным.

3 голосов
/ 21 марта 2012

Гораздо проще прочитать это из системных свойств:

String version = System.getProperty("os.version");
if (version.contains("cyanogenmod")) {
    isCyanogenMode = true;
}

На моем устройстве os.version равно 2.6.37.6-cyanogenmod-01509-g8913be8

В качестве альтернативы вы также можете полагаться на константу Build.USER , которая содержит имя человека, который собрал сборку. Для CyanogenMod это часто "тень" (еще одно прозвище Стива Кондика или Cyanogen).

Существует также специальное свойство ro.modversion, но, насколько я вижу, вам потребуется доступ к внутреннему классу SystemProperties для его программного чтения.

1 голос
/ 31 июля 2014

На моем устройстве System.getProperty("os.version") это что-то вроде 3.0.64-CM-g9d16c8a. Проверка на cyanogenmod в номере версии больше не работает. Я добавил больше деталей в эту запись .

0 голосов
/ 23 декабря 2014

Конечными пользователями ядро ​​все время выгружается, поэтому использование System.getProperty ("os.version") или чтение из / proc / version не являются хорошими показателями того, работает ли устройство на cyanogenmod.Позвольте мне перефразировать, использовать их исключительно как индикатор не очень хорошая идея.Вам нужно будет использовать комбинацию методов.Как @kakopappa указал в своем другом посте, где он читает os.version и / proc / version, вы также должны проверить

android.os.Build.HOST

Из моего опыта, который содержал cyanogenmod в нем 9 раз из 10. Просто чтобы бытьбезопасно, вы захотите использовать и другие методы, так как переменную HOST можно изменить через build.prop -> ro.build.host

0 голосов
/ 04 апреля 2011

Самый простой способ, который я нашел, это прочитать файл / proc / version, который содержит информацию о версии ядра.

Телефоны с cyanogenmod дают что-то вроде:

Linux version 2.6.37.2-cyanogenmod-01149-g8cdf03e

чтение этого файлане требует привилегий root (runnung uname -r делает).

...