package com.example.liuan.deviceinfo;import android.os.Environment;import android.text.TextUtils;import android.util.Log;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.Collection;import java.util.Enumeration;import java.util.Map;import java.util.Properties;import java.util.Set;public class OSUtils {    //MIUI标识    private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";    private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";    private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";    //EMUI标识    private static final String KEY_EMUI_VERSION_CODE = "ro.build.version.emui";    private static final String KEY_EMUI_API_LEVEL = "ro.build.hw_emui_api_level";    private static final String KEY_EMUI_CONFIG_HW_SYS_VERSION = "ro.confg.hw_systemversion";    //Flyme标识    private static final String KEY_FLYME_ID_FALG_KEY = "ro.build.display.id";    private static final String KEY_FLYME_ID_FALG_VALUE_KEYWORD = "Flyme";    private static final String KEY_FLYME_ICON_FALG = "persist.sys.use.flyme.icon";    private static final String KEY_FLYME_SETUP_FALG = "ro.meizu.setupwizard.flyme";    private static final String KEY_FLYME_PUBLISH_FALG = "ro.flyme.published";    //当前标识符    private static String KEY_CURRENT_FALG = KEY_MIUI_INTERNAL_STORAGE;    //     /**     * @param     * @return ROM_TYPE ROM类型的枚举     * @description获取ROM类型: MIUI_ROM, FLYME_ROM, EMUI_ROM, OTHER_ROM     */    public static ROM_TYPE getRomType() {        ROM_TYPE rom_type = ROM_TYPE.OTHER;        try {            BuildProperties buildProperties = new BuildProperties();            if (buildProperties.containsKey(KEY_EMUI_VERSION_CODE) || buildProperties.containsKey(KEY_EMUI_API_LEVEL) || buildProperties.containsKey(KEY_EMUI_CONFIG_HW_SYS_VERSION)) {                return ROM_TYPE.EMUI;            }            if (buildProperties.containsKey(KEY_MIUI_VERSION_CODE) || buildProperties.containsKey(KEY_MIUI_VERSION_NAME) || buildProperties.containsKey(KEY_MIUI_INTERNAL_STORAGE)) {                return ROM_TYPE.MIUI;            }            if (buildProperties.containsKey(KEY_FLYME_ICON_FALG) || buildProperties.containsKey(KEY_FLYME_SETUP_FALG) || buildProperties.containsKey(KEY_FLYME_PUBLISH_FALG)) {                return ROM_TYPE.FLYME;            }            if (buildProperties.containsKey(KEY_FLYME_ID_FALG_KEY)) {                String romName = buildProperties.getProperty(KEY_FLYME_ID_FALG_KEY);                if (!TextUtils.isEmpty(romName) && romName.contains(KEY_FLYME_ID_FALG_VALUE_KEYWORD)) {                    return ROM_TYPE.FLYME;                }            }        } catch (IOException e) {            e.printStackTrace();        }        return rom_type;    }    public enum ROM_TYPE {        MIUI,        FLYME,        EMUI,        OTHER    }    //    public static String getSystemProperty(String propName){//        String line;//        BufferedReader input = null;//        try//        {//            Process p = Runtime.getRuntime().exec("getprop " + propName);//            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);//            line = input.readLine();//            input.close();//        }//        catch (IOException ex)//        {//            Log.e(TAG, "Unable to read sysprop " + propName, ex);//            return null;//        }//        finally//        {//            if(input != null)//            {//                try//                {//                    input.close();//                }//                catch (IOException e)//                {//                    Log.e(TAG, "Exception while closing InputStream", e);//                }//            }//        }//        return line;//    }/*获取osVersion*/    public static String getSystemProperty() {        String line;        BufferedReader input = null;        try {            Process p = Runtime.getRuntime().exec("getprop " + KEY_CURRENT_FALG);            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);            line = input.readLine();            input.close();        } catch (IOException ex) {            Log.e(TAG, "Unable to read sysprop " + KEY_CURRENT_FALG, ex);            return null;        } finally {            if (input != null) {                try {                    input.close();                } catch (IOException e) {                    Log.e(TAG, "Exception while closing InputStream", e);                }            }        }        return line;    }    private static final String TAG = "OSUtils";    public static class BuildProperties {        private BuildProperties ourInstance;        public BuildProperties getInstance() throws IOException {            if (ourInstance == null) ourInstance = new BuildProperties();            return ourInstance;        }        private Properties properties;        private BuildProperties() throws IOException {            properties = new Properties();            properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));        }        public boolean containsKey(final String key) {            boolean b = properties.containsKey(key);            if (b) {                KEY_CURRENT_FALG = key;                Log.e(TAG, "containsKey: " + KEY_CURRENT_FALG);            }            return b;        }        public boolean containsValue(final Object value) {            return properties.containsValue(value);        }        public String getProperty(final String name) {            return properties.getProperty(name);        }        public String getProperty(final String name, final String defaultValue) {            return properties.getProperty(name, defaultValue);        }        public Set> entrySet() {            return properties.entrySet();        }        public boolean isEmpty() {            return properties.isEmpty();        }        public Enumeration keys() {            return properties.keys();        }        public Set keySet() {            return properties.keySet();        }        public int size() {            return properties.size();        }        public Collection values() {            return properties.values();        }    }}

更多相关文章

  1. 基站定位获取位置坐标
  2. android 获取手机相关信息
  3. android问题:保存文件后文件内容为空
  4. 使用Bitmap遍历Assets目录下图片
  5. 使用Intent实现页面跳转 (另一种方法)
  6. Application 判断 是否在主进程、主线程
  7. Android(SpreadTurm)获取屏幕亮度,再设置屏幕亮度
  8. LocalBroadcastManager发送广播
  9. Android(安卓)获取外网IP地址 (Wifi 4G 通用)

随机推荐

  1. Android的raw下视频文件的读写-日记
  2. 关于安卓屏幕切换的过程
  3. Android获取外置sdcard路径
  4. win平台改代码到android 平台需要注意
  5. Android为什么会有65536的方法数量限制
  6. Android--面试题整理(五)
  7. 周末小结(五)
  8. Android的下载,编译, 运行
  9. Android中BroadcastReceiver广播使用及注
  10. (4.2.10.2)【android开源工具】Android Vol