packagecom.hxzk.som.base.utils;importandroid.os.Build;importandroid.text.TextUtils;importandroid.util.Log;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;/*** Created by HaiyuKing
* Used 判断手机ROM,检测ROM是MIUI、EMUI还是Flyme
* 参考资料:https://www.jianshu.com/p/ba9347a5a05a
*/
public classRomUtil {private static final String TAG = "Rom";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";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 staticString sName;private staticString sVersion;//华为
public static booleanisEmui() {returncheck(ROM_EMUI);
}//小米
public static booleanisMiui() {returncheck(ROM_MIUI);
}//vivo
public static booleanisVivo() {returncheck(ROM_VIVO);
}//oppo
public static booleanisOppo() {returncheck(ROM_OPPO);
}//魅族
public static booleanisFlyme() {returncheck(ROM_FLYME);
}//360手机
public static booleanis360() {return check(ROM_QIKU) || check("360");
}public static booleanisSmartisan() {returncheck(ROM_SMARTISAN);
}public staticString getName() {if (sName == null) {
check("");
}returnsName;
}public staticString getVersion() {if (sVersion == null) {
check("");
}returnsVersion;
}public static booleancheck(String rom) {if (sName != null) {returnsName.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();
}
}returnsName.equals(rom);
}public staticString 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();
}
}
}returnline;
}
}