android 获取rom名称和版本号
16lz
2021-01-26
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(); } }}
更多相关文章
- 基站定位获取位置坐标
- android 获取手机相关信息
- android问题:保存文件后文件内容为空
- 使用Bitmap遍历Assets目录下图片
- 使用Intent实现页面跳转 (另一种方法)
- Application 判断 是否在主进程、主线程
- Android(SpreadTurm)获取屏幕亮度,再设置屏幕亮度
- LocalBroadcastManager发送广播
- Android(安卓)获取外网IP地址 (Wifi 4G 通用)