android 获取rom名称和版本号

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();
        }
    }


}

你可能感兴趣的:(#,工具类)