天天看點

android 擷取手機系統屬性

1、手機系統所有屬性可以通過adb指令擷取:adb getprop ;

2、也可以通過代碼擷取,一部分屬性可以通過android.os.Build這個類擷取,但是有一部分擷取不了,比如手機子品牌“ro.product.brand.sub”,那麼可以通過反射android.os.SystemProperties的方法擷取,這裡做個記錄,代碼如下:

/**
     * 設定屬性值
     *
     * @param key   長度不能超過31,key.length <= 30
     * @param value 長度不能超過91,value.length<=90
     */
    public static void set(String key, String value) {
        // android.os.SystemProperties
        // public static void set(String key, String val)
        try {
            Class<?> cls = Class.forName("android.os.SystemProperties");
            Method method = cls.getMethod("set", String.class, String.class);
            method.invoke(null, key, value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 擷取屬性值
     *
     * @param key 長度不能超過31,key.length <= 30
     * @param defValue
     * @return
     */
    public static String get(String key, String defValue) {
        // android.os.SystemProperties
        // public static String get(String key, String def)
        try {
            Class<?> cls = Class.forName("android.os.SystemProperties");
            Method method = cls.getMethod("get", String.class, String.class);
            return (String) method.invoke(null, key, defValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return defValue;
    }

}