package com.wpc.library.util;
|
|
import android.content.Context;
|
import android.content.pm.PackageManager;
|
import androidx.core.content.ContextCompat;
|
import android.telephony.TelephonyManager;
|
|
import com.wpc.library.util.common.DeviceUtil;
|
import com.wpc.library.util.common.StringUtils;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.lang.reflect.Method;
|
import java.util.Locale;
|
import java.util.Properties;
|
|
/**
|
* Created by weikou2015 on 2018/5/17.
|
* 获取手机属性
|
*/
|
|
public class MobileUtil {
|
public static final String SYS_EMUI = "sys_emui";
|
public static final String SYS_MIUI = "sys_miui";
|
public static final String SYS_FLYME = "sys_flyme";
|
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";
|
private static final String KEY_EMUI_API_LEVEL = "ro.build.hw_emui_api_level";
|
private static final String KEY_EMUI_VERSION = "ro.build.version.emui";
|
private static final String KEY_EMUI_CONFIG_HW_SYS_VERSION = "ro.confg.hw_systemversion";
|
|
/**
|
* 获取当前手机系统语言。
|
*
|
* @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
|
*/
|
public static String getSystemLanguage() {
|
return Locale.getDefault().getLanguage();
|
}
|
|
/**
|
* 获取当前系统上的语言列表(Locale列表)
|
*
|
* @return 语言列表
|
*/
|
public static Locale[] getSystemLanguageList() {
|
return Locale.getAvailableLocales();
|
}
|
|
/**
|
* 获取当前手机系统版本号
|
*
|
* @return 系统版本号
|
*/
|
public static String getSystemVersion() {
|
return android.os.Build.VERSION.RELEASE;
|
}
|
|
/**
|
* 获取手机型号
|
*
|
* @return 手机型号
|
*/
|
public static String getSystemModel() {
|
return android.os.Build.MODEL;
|
}
|
|
/**
|
* 获取手机厂商
|
*
|
* @return 手机厂商
|
*/
|
public static String getDeviceBrand() {
|
return android.os.Build.BRAND;
|
}
|
|
/**
|
* 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
|
*
|
* @return 手机IMEI
|
*/
|
public static String getIMEI(Context ctx) {
|
TelephonyManager tm = (TelephonyManager) ctx
|
.getSystemService(Context.TELEPHONY_SERVICE);
|
String deviceId="";
|
if (ContextCompat.checkSelfPermission(ctx, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED
|
|| ContextCompat.checkSelfPermission(ctx, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
|
deviceId = DeviceUtil.getImeiCache(ctx);
|
}
|
return deviceId;
|
}
|
|
/**
|
* 验证手机格式
|
*/
|
/*
|
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
|
联通:130、131、132、152、155、156、185、186
|
电信:133、153、180、189、(1349卫通)
|
总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
|
|
------------------------------------------------
|
13(老)号段:130、131、132、133、134、135、136、137、138、139
|
14(新)号段:145、147
|
15(新)号段:150、151、152、153、154、155、156、157、158、159
|
17(新)号段:170、171、173、175、176、177、178
|
18(3G)号段:180、181、182、183、184、185、186、187、188、189
|
*/
|
public static boolean isMobileNum(String mobiles) {
|
String telRegex = "[1][34578]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、4、5、7、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
|
if (StringUtils.isEmpty(mobiles))
|
return false;
|
else
|
return mobiles.matches(telRegex);
|
}
|
|
public static String getSystem() {
|
String SYS = SYS_MIUI;
|
try {
|
Properties prop = new Properties();
|
prop.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
|
if (prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null
|
|| prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null
|
|| prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null) {
|
SYS = SYS_MIUI;//小米
|
} else if (prop.getProperty(KEY_EMUI_API_LEVEL, null) != null
|
|| prop.getProperty(KEY_EMUI_VERSION, null) != null
|
|| prop.getProperty(KEY_EMUI_CONFIG_HW_SYS_VERSION, null) != null) {
|
SYS = SYS_EMUI;//华为
|
} else if (getMeizuFlymeOSFlag().toLowerCase().contains("flyme")) {
|
SYS = SYS_FLYME;//魅族
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return SYS;
|
}
|
return SYS;
|
}
|
|
public static String getMeizuFlymeOSFlag() {
|
return getSystemProperty("ro.build.display.id", "");
|
}
|
|
private static String getSystemProperty(String key, String defaultValue) {
|
try {
|
Class<?> clz = Class.forName("android.os.SystemProperties");
|
Method get = clz.getMethod("get", String.class, String.class);
|
return (String) get.invoke(clz, key, defaultValue);
|
} catch (Exception e) {
|
}
|
return defaultValue;
|
}
|
}
|