adb shell 查看系統屬性(用來判斷特殊的作業系統)

來源:互聯網
上載者:User

標籤:

一般來講,在android程式開發中進行需要判斷裝置類型和系統版本 1、裝置類型判斷比如判斷屬於Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星裝置,魅族裝置等;這類型的問題都使用的android.os.Build.MODEL來判斷,android.os.Build.MODEL是一個String變數,可以根據String中一些特殊欄位來判斷android裝置屬於什麼裝置,比如判斷Nexus 7,代碼入下public static boolean isN7() {
        return "Nexus 7".equals(android.os.Build.MODEL);
} 所以平時開發過程中如果不知道一個裝置的MODEL值,寫個測試程式輸出android.os.Build.MODEL值,然後再將該值用到我麼的程式中參與判斷。  2、系統版本判斷(api版本)比如判斷系統是屬於2.3, 3.0, 4.4, 5.0 等,這種屬性判斷使用的是系統的android.os.Build.VERSION.SDK_INT變數。最常用的情境是用來判斷一些系統函數的api版本,比如有些方法只有高版本的api才有,低版本上使用會導致程式崩潰。 但是還有一種情境導致還要第三種方法才能搞定使用情境:現在作業系統大多是開源的,預設是google 的android系統,但是別忘了還有魅族的Flyme OS 和小米的 Miui,它們是android的變種。如果用非小米手機也裝上了miui,後者是非魅族手機裝上了魅族的Flyme OS,這種情況怎麼判斷呢。拿魅族來說:顯然這個時候不能用判斷裝置類型的方式,因為非魅族裝置安裝了魅族系統。所以這個時候只能判斷這個作業系統是魅族的Flyme OS,它的作業系統應該具備一些它自己的特性,所以只要找到一個唯一的特性就可以解決上面的問題了。  3、判斷特殊的作業系統---擷取系統屬性加以研究(魅族為例)進入adb shell,擷取魅族系統屬性:
  • 首先進入cmd,然後輸入adb shell 命令進入adb shell (前提:adb必須要配置到系統內容變數中)
     C:\Users\Administrator> adb shell
     [email protected]:/ $
  • 進入system目錄
     [email protected]:/ $  cd system
     cd system
     [email protected]:/system $
  • 查看系統屬性
     [email protected]:/system $  cat build.prop
     cat build.prop
     # begin build properties
     # autogenerated by buildinfo.sh
     ro.build.cta=noncta
     ro.build.id=KTU84P
     ro.build.mask.id=4.4.4-1423716396_wo
     ro.build.args=
     ro.build.inside.id=4.4.4-20150212124636
     ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636
     ro.build.version.sdk=19
     ro.build.version.codename=REL
     ro.build.version.release=4.4.4    .....還有很多
  • 篩選包含Flyme字元的屬性,因為既然是魅族作業系統,Flyme這個詞最能代表它的屬性
     [email protected]:/system $  cat build.prop | grep Flyme
     cat build.prop | grep Flyme
     ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636
     ro.build.display.id=Flyme OS 4.2.2.1U
     ro.build.description=meizu_mx4pro-user 4.4.4 KTU84P m76.Flyme_OS_4.2.2.1.2015021
     2124636 release-keys
     ro.build.fingerprint=Meizu/meizu_mx4pro/mx4pro:4.4.4/KTU84P/m76.Flyme_OS_4.2.2.1
     .20150212124636:user/release-keys
     [email protected]:/system $         帥選到四個屬性:ro.build.version.incremental   ro.build.display.id   ro.build.description                                        ro.build.fingerprint
  • 換一個其他的安裝有魅族作業系統裝置,重複上面的步驟。最終會發現 ro.build.display.id這個屬性可以當做一個魅族作業系統唯一的特性(因為這個屬性值幾乎都會包含Flyme欄位,這正是我們想要的)。我們就可以用這個屬性來與其他系統進行區分。
  • 最後一步,當然是怎麼取出這個屬性值了。
// 判斷是魅族作業系統public static boolean isMeizuFlymeOS() {
        return getMeizuFlymeOSFlag().toLowerCase().contains("flyme");
} /**
* 擷取魅族系統操作版本標識
*/
public static String getMeizuFlymeOSFlag() {
        return getSystemProperty("ro.build.display.id", "");
} private static String getSystemProperty(String key, String defaultValue) {
        try {
                Class<?> clz = Class.forName(" android.os.SystemProperties");
                Method get = clz.getMethod("get", String.class, String.class);
                return (String)get.invoke(clz, key, defaultValue);
        } catch (ClassNotFoundException e) {
        } catch (NoSuchMethodException e) {
        } catch (IllegalAccessException e) {
        } catch (IllegalArgumentException e) {
        } catch (InvocationTargetException e) {
        }
        return defaultValue;
} 下面是小米作業系統的一些相關方法/**
* 擷取MIUI版本名
*/
public static String getMIUIVersionName() {
        return getSystemProperty( "ro.miui.ui.version.name", null);
} // MIUI v5版本public static boolean isV5(){
        if("V5".equalsIgnoreCase(getMIUIVersionName())){
                return true;
        }
        return false;
}

adb shell 查看系統屬性(用來判斷特殊的作業系統)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.