2011-03-31 5 views
4

http://developer.android.com/reference/android/os/Build.html에서 많은 입력란을 확인했습니다.CyanogenMod가 보드에 있다는 것을 어떻게 인식합니까?

그러나 특정 장치가 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 

답변

0

내가 커널 버전에 대한 정보가 들어있는 파일/proc 디렉토리/버전을 읽는 것입니다 발견하는 가장 쉬운 방법. 하지 (uname -r가하는 runnung) 루트 권한이 필요합니다이 파일을 읽을

Linux version 2.6.37.2-cyanogenmod-01149-g8cdf03e 

: 사이 애 노젠 모드와

전화 같은 것을 제공합니다.

+0

누구나 커널을 바꿀 수있는 가장 확실한 대답은 아닙니다.이 대답은 실패 할 수 있습니다. –

3

그것은 시스템 등록 정보에서 읽어 훨씬 쉽게 : 내 장치에

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

, os.version는 또한 2.6.37.6-cyanogenmod-01509-g8913be8

, 당신은 또한의 이름을 운반 Build.USER 일정에 의존 할 수 빌드를 조립 한 사람. CyanogenMod의 경우 이것은 종종 "그늘"입니다 (Steve Kondik 일명 Cyanogen의 또 다른 별명).

또한 특별한 속성 ro.modversion가 있지만 프로그래밍 방식으로이를 읽으려면 SystemProperties 내부 클래스에 액세스해야합니다.

+0

이것은 나를 위해 작동하지 않습니다. 나는'System.getProperty ("os.version")''3.4.0-g9c0baa9'를 얻는다. –

6

PackageManager.hasSystemFeature("com.cyanogenmod.android")은 더 일관성이 있습니다.

+0

이것이 가장 일관된 방법이라고 어디에서 들었습니까? –

+0

"시스템 기능"은 정확한 의미를 가진 고유 한 이름이므로 의도하지 않게 변경 될 가능성이 거의 없습니다. –

1

내 장치에서 System.getProperty("os.version")3.0.64-CM-g9d16c8a과 비슷합니다. 버전 번호에서 cyanogenmod을 확인하는 것이 더 이상 작동하지 않습니다. 이 post에 자세한 내용을 추가했습니다.

0

커널은 최종 사용자가 항상 스왑 아웃하므로 System.getProperty ("os.version")를 사용하거나/proc/version을 읽는 것은 장치가 cyanogenmod를 실행 중인지 여부를 나타내는 좋은 지표가 아닙니다. 나는 지표를 사용하는 것이 좋은 생각이 아니므로 그것들을 사용하여 다시 말해 보겠습니다. 방법의 조합을 사용해야합니다. @kakopappa 그가 os.version 및/proc 디렉토리/버전을 읽고 그의 다른 게시물에 나타난 바와 같이 당신은 또한 10 밖으로 9 번 사이 애 노젠 모드를 포함하고있다 내 경험에서

android.os.Build.HOST 

은 그냥 안전을 위해 확인해야 HOST 변수가 build.prop -> ro.build.host를 통해 변경 될 수 있기 때문에 다른 방법도 사용하고 싶습니다.

1

다음 코드는 작동합니다. 나는 그것을 시험했다.

public static boolean isCyanogenMod() { 
    try { 
     return Class.forName("cyanogenmod.os.Build") != null; 
    } catch (Exception ignored) {} 

    return false; 
}