博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rom 检测
阅读量:7290 次
发布时间:2019-06-30

本文共 5296 字,大约阅读时间需要 17 分钟。

Blog:

由于 Android 机型繁多,存在着各种定制的ROM,所以在开发应用的过程中,时常需要针对不同的ROM进行适配。

对于深度定制的ROM通常检查/system/build.prop文件中的某些自定义字段(比如ROM版本名)是否存在来判断ROM类型。

一些常见机型的 build.prop文件

对于未深度定制的系统,可能没有明显的自定义字段,这时直接用 Build.MANUFACTURER 来判断。

代码如下,检查是否某类型ROM,获取 ROM名称RomUtil.getName(),版本名RomUtil.getVersion()

public class RomUtil {    private static final String TAG = "RomUtil";    public static final String ROM_MIUI = "MIUI";    public static final String ROM_EMUI = "EMUI";    public static final String ROM_FLYME = "FLYME";    public static final String ROM_OPPO = "OPPO";    public static final String ROM_SMARTISAN = "SMARTISAN";    public static final String ROM_VIVO = "VIVO";    public static final String ROM_QIKU = "QIKU";    public static final String ROM_LENOVO = "LENOVO";    public static final String ROM_SAMSUNG = "SAMSUNG";    private static final String KEY_VERSION_MIUI = "ro.miui.ui.version.name";    private static final String KEY_VERSION_EMUI = "ro.build.version.emui";    private static final String KEY_VERSION_OPPO = "ro.build.version.opporom";    private static final String KEY_VERSION_SMARTISAN = "ro.smartisan.version";    private static final String KEY_VERSION_VIVO = "ro.vivo.os.version";    private static final String KEY_VERSION_GIONEE = "ro.gn.sv.version";    private static final String KEY_VERSION_LENOVO = "ro.lenovo.lvp.version";    private static final String KEY_VERSION_FLYME = "ro.build.display.id";    private static final String KEY_EMUI_VERSION_CODE = "ro.build.hw_emui_api_level";    private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";    private static final String KEY_MIUI_HANDY_MODE_SF = "ro.miui.has_handy_mode_sf";    private static final String KEY_MIUI_REAL_BLUR = "ro.miui.has_real_blur";    private static final String KEY_FLYME_PUBLISHED = "ro.flyme.published";    private static final String KEY_FLYME_FLYME = "ro.meizu.setupwizard.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 final String KEY_VIVO_OS_NAME = "ro.vivo.os.name";    private static final String KEY_VIVO_OS_VERSION = "ro.vivo.os.version";    private static final String KEY_VIVO_ROM_VERSION = "ro.vivo.rom.version";    public static boolean isEmui() {        return check(ROM_EMUI);    }    public static boolean isMiui() {        return check(ROM_MIUI);    }    public static boolean isVivo() {        return check(ROM_VIVO);    }    public static boolean isOppo() {        return check(ROM_OPPO);    }    public static boolean isFlyme() {        return check(ROM_FLYME);    }    public static boolean isQiku() {        return check(ROM_QIKU) || check("360");    }    public static boolean isSmartisan() {        return check(ROM_SMARTISAN);    }    private static String sName;    public static String getName() {        if (sName == null) {            check("");        }        return sName;    }    private static String sVersion;    public static String getVersion() {        if (sVersion == null) {            check("");        }        return sVersion;    }    public static boolean check(String rom) {        if (sName != null) {            return sName.equals(rom);        }        if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_MIUI))) {            sName = ROM_MIUI;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_EMUI))){            sName = ROM_EMUI;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_OPPO))){            sName = ROM_OPPO;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_VIVO))){            sName = ROM_VIVO;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_SMARTISAN))){            sName = ROM_SMARTISAN;        } else {            sVersion = Build.DISPLAY;            if (sVersion.toUpperCase().contains(ROM_FLYME)) {                sName = ROM_FLYME;            } else {                sVersion = Build.UNKNOWN;                sName = Build.MANUFACTURER.toUpperCase();            }        }        return sName.equals(rom);    }    public static String getProp(String name) {        String line = null;        BufferedReader input = null;        try {            Process p = Runtime.getRuntime().exec("getprop " + name);            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);            line = input.readLine();            input.close();        } catch (IOException ex) {            Log.e(TAG, "Unable to read prop " + name, ex);            return null;        } finally {            if (input != null) {                try {                    input.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return line;    }    //    private static Properties props = new Properties();    //    static {
// try {
// props.load(new FileInputStream(new File("/system/build.prop"))); // } catch (IOException e) {
// // } // } // public static String getProp(String name) {
// return props.getProperty(name, Build.UNKNOWN); // }}复制代码

转载地址:http://ypcjm.baihongyu.com/

你可能感兴趣的文章
***单文件搞定微信支付和支付宝支付
查看>>
Adminimize 插件:WordPress根据用户角色显示/隐藏某些后台功能
查看>>
运维老鸟教你安装centos6.5如何选择安装包
查看>>
Entity Framework Code-First(13):Configure Many-to-Many
查看>>
Hash的应用
查看>>
如何解决缺少OCX问题,如何在win7 64位下注册OCX
查看>>
《程序员代码面试指南》第五章 字符串问题 将整数字符串转成整数值
查看>>
python模拟登录人人网
查看>>
SSM整合过程中出现的问题
查看>>
37、如何在函数中设置一个全局变量 ?
查看>>
java 类加载机制总结
查看>>
HDU 4417 Super Mario(2012杭州网络赛 H 离线线段树)
查看>>
62. Unique Paths不同路径
查看>>
观察者模式
查看>>
容器和算法2 - C++快速入门48(完)
查看>>
Survival Model介绍
查看>>
关于对handle的理解
查看>>
php+mysql将大数据sql文件导入数据库
查看>>
记第一次写博客
查看>>
绝对定位元素被遮挡
查看>>