Android判断系统是不是FlymeEMUIMIUI

Posted 七色音阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android判断系统是不是FlymeEMUIMIUI相关的知识,希望对你有一定的参考价值。

package com.liyunlong.common.utils;

import android.os.Build;
import android.os.Environment;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * 设备系统辅助类
 *
 * @author liyunlong
 * @date 2017/5/27 11:36
 */
public final class OSHelper 

    private static final String KEY_EMUI_VERSION_CODE = "ro.build.version.emui";
    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";

    public static boolean isFlyme() 
        try 
            final Method method = Build.class.getMethod("hasSmartBar");
            return method != null;
         catch (final Exception e) 
            return false;
        
    

    public static boolean isEMUI() 
        return isPropertiesExist(KEY_EMUI_VERSION_CODE);
    

    public static boolean isMIUI() 
        return isPropertiesExist(KEY_MIUI_VERSION_CODE, KEY_MIUI_VERSION_NAME, KEY_MIUI_INTERNAL_STORAGE);
    

    private static boolean isPropertiesExist(String... keys) 
        if (keys == null || keys.length == 0) 
            return false;
        
        try 
            BuildProperties properties = BuildProperties.newInstance();
            for (String key : keys) 
                String value = properties.getProperty(key);
                if (value != null)
                    return true;
            
            return false;
         catch (IOException e) 
            return false;
        
    

    private static final class BuildProperties 

        private final Properties properties;

        private BuildProperties() throws IOException 
            properties = new Properties();
            // 读取系统配置信息build.prop类
            properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
        

        public boolean containsKey(final Object key) 
            return properties.containsKey(key);
        

        public boolean containsValue(final Object value) 
            return properties.containsValue(value);
        

        public Set<Map.Entry<Object, Object>> entrySet() 
            return properties.entrySet();
        

        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 boolean isEmpty() 
            return properties.isEmpty();
        

        public Enumeration<Object> keys() 
            return properties.keys();
        

        public Set<Object> keySet() 
            return properties.keySet();
        

        public int size() 
            return properties.size();
        

        public Collection<Object> values() 
            return properties.values();
        

        public static BuildProperties newInstance() throws IOException 
            return new BuildProperties();
        
    


以上是关于Android判断系统是不是FlymeEMUIMIUI的主要内容,如果未能解决你的问题,请参考以下文章

android 判断activity是不是被回收

android判断某服务是不是正在运行

Android判断是不是安装某App

Android 是怎么判断某个APK文件是不是已经安装

Android判断SD卡是不是存在的实现

android 判断是不是有sim卡及运营商