默认根目录名称:当前包名54 | * @return 55 | */ 56 | public BasicConfig initDir(){ 57 | initDir(mContext.getPackageName()); 58 | return this; 59 | } 60 | 61 | /** 62 | * 初始化SDCard缓存目录 63 | * @param dirName 根目录名称 64 | * @return 65 | */ 66 | public BasicConfig initDir(@NonNull String dirName){ 67 | SDcardUtil.setRootDirName(dirName); 68 | SDcardUtil.initDir(); 69 | return this; 70 | } 71 | 72 | /** 73 | * 默认异常信息处理 74 | * @return 75 | */ 76 | public BasicConfig initExceptionHandler(){ 77 | return initExceptionHandler(new DefaultCrashProcess(mContext)); 78 | } 79 | /** 80 | * 自定义异常信息处理 81 | * @return 82 | */ 83 | public BasicConfig initExceptionHandler(ICrashProcess crashProcess){ 84 | CrashHandler.getInstance(crashProcess); 85 | return this; 86 | } 87 | 88 | /** 89 | * 日志打印参数配置 90 | * @param isDebug true:打印全部日志,false:不打印日志 91 | * @return 92 | */ 93 | public BasicConfig initLog(boolean isDebug){ 94 | initLog(LOG_TAG, null, true, null,isDebug); 95 | return this; 96 | } 97 | 98 | /** 99 | * 日志打印参数配置 100 | * @param tag 日志标示 101 | * @return 102 | */ 103 | public BasicConfig initLog(String tag){ 104 | initLog(tag,true); 105 | return this; 106 | } 107 | /** 108 | * 日志打印参数配置 109 | * @param tag 日志标示,可以为空 110 | * @param isDebug true:打印全部日志,false:不打印日志 111 | * @return 112 | */ 113 | public BasicConfig initLog(String tag,boolean isDebug){ 114 | initLog(tag,null,true,null,isDebug); 115 | return this; 116 | } 117 | 118 | /** 119 | * 日志打印参数配置 120 | * @param tag 日志标示,可以为空 121 | * @param methodCount 显示方法行数,默认为:2 122 | * @param isHideThreadInfo 是否显示线程信息,默认显示 123 | * @param logTool 自定义日志打印,可以为空 124 | * @param isDebug true:打印全部日志,false:不打印日志 125 | * @return 126 | */ 127 | public BasicConfig initLog(String tag,Integer methodCount, 128 | boolean isHideThreadInfo,LogTool logTool, 129 | boolean isDebug){ 130 | 131 | Settings settings = Logger.init(TextUtils.isEmpty(tag) ? LOG_TAG : tag); 132 | if(null != methodCount){ 133 | settings.methodCount(methodCount); 134 | } 135 | if(isHideThreadInfo){ 136 | settings.hideThreadInfo(); 137 | } 138 | if(null != logTool){ 139 | settings.logTool(logTool); 140 | } 141 | settings.logLevel(isDebug ? LogLevel.FULL : LogLevel.NONE); 142 | return this; 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /basicproject/src/main/java/com/hy/basicproject/utils/AppInfoUtil.java: -------------------------------------------------------------------------------- 1 | package com.hy.basicproject.utils; 2 | 3 | import android.app.ActivityManager; 4 | import android.content.ComponentName; 5 | import android.content.Context; 6 | import android.content.pm.PackageInfo; 7 | import android.content.pm.PackageManager; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | /** 13 | * 应用程序相关信息工具类 14 | * 15 | * @author qq8585083 16 | * 17 | */ 18 | public final class AppInfoUtil { 19 | 20 | private AppInfoUtil() { } 21 | 22 | 23 | /** 24 | * 获取应用程序信息 25 | */ 26 | public static PackageInfo getPackageInfo(Context context) { 27 | try { 28 | PackageManager packageManager = context.getPackageManager(); 29 | PackageInfo info = packageManager.getPackageInfo(context.getPackageName(), 0); 30 | return info; 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | return null; 35 | } 36 | 37 | 38 | /** 39 | * 获取应用程序名称 40 | */ 41 | public static String getAppName(Context context) { 42 | try { 43 | PackageManager packageManager = context.getPackageManager(); 44 | PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); 45 | int labelRes = packageInfo.applicationInfo.labelRes; 46 | return context.getResources().getString(labelRes); 47 | } catch (PackageManager.NameNotFoundException e) { 48 | e.printStackTrace(); 49 | } 50 | return null; 51 | } 52 | 53 | 54 | /** 55 | * 获取应用程序版本名称 56 | */ 57 | public static String getVersionName(Context context) { 58 | return null == getPackageInfo(context) ? null : getPackageInfo(context).versionName; 59 | } 60 | 61 | 62 | /** 63 | * 获取应用程序版本号 64 | */ 65 | public static int getVersionCode(Context context) { 66 | return null == getPackageInfo(context) ? null : getPackageInfo(context).versionCode; 67 | } 68 | 69 | 70 | /** 71 | * 获取应用程序包名 72 | */ 73 | public static String getPackageName(Context context) { 74 | return null == getPackageInfo(context) ? null : getPackageInfo(context).packageName; 75 | } 76 | 77 | 78 | /** 79 | * 判断当前应用程序是否处于后台 80 | *
需要权限:<uses-permission android:name="android.permission.GET_TASKS" />81 | */ 82 | public static boolean isApplicationToBackground(final Context context) { 83 | ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 84 | List
60 | * WIFI_ENCRYPTION_TYPE_WEP:WEP加密 61 | * WIFI_ENCRYPTION_TYPE_PSK:PSK加密 62 | * WIFI_ENCRYPTION_TYPE_EAP:EAP加密 63 | * WIFI_ENCRYPTION_TYPE_NONE:无加密 64 | *65 | */ 66 | public static int getEncryptionType(ScanResult scanResult) { 67 | if (scanResult.capabilities.contains("WEP")) { 68 | return WIFI_ENCRYPTION_TYPE_WEP; 69 | } 70 | else if (scanResult.capabilities.contains("PSK")) { 71 | return WIFI_ENCRYPTION_TYPE_PSK; 72 | } 73 | else if (scanResult.capabilities.contains("EAP")) { 74 | return WIFI_ENCRYPTION_TYPE_EAP; 75 | } 76 | return WIFI_ENCRYPTION_TYPE_NONE; 77 | } 78 | 79 | 80 | /** 81 | * 启用/禁用 wifi 82 | * @param enabled 83 | */ 84 | public void setEnabled(boolean enabled) { 85 | if(mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING || 86 | mWifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLING){ 87 | return; 88 | } 89 | mWifiManager.setWifiEnabled(enabled); 90 | } 91 | 92 | 93 | /** 94 | * 获取已连接过的wifi配置列表 95 | */ 96 | public List
63 | * 在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来. 64 | * 在设备恢复出厂设置后,该值可能会改变, ANDROID_ID也可视为作为唯一设备标识号的一个好选择。 65 | *66 | * @return 67 | */ 68 | public String getAndroidId(){ 69 | final String androidId = android.provider.Settings.Secure.getString(mContext.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); 70 | return TextUtils.isEmpty(androidId) ? "" : androidId; 71 | } 72 | /** 73 | * 获取UUID 74 | * UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。 75 | * @return 76 | */ 77 | public String getUUID(){ 78 | return UUID.randomUUID().toString(); 79 | } 80 | 81 | /** 82 | * 获取设备绝对的唯一标识 83 | * 先获取DeviceId,如果为空,获取ANDROID_ID,如果还是空,生成一个UUID 84 | * @return 85 | */ 86 | public String getID(){ 87 | String result = getDeviceId(); 88 | if(TextUtils.isEmpty(result)){ 89 | result = getAndroidId(); 90 | if(TextUtils.isEmpty(result)){ 91 | result = getUUID(); 92 | } 93 | } 94 | return result; 95 | } 96 | 97 | /** 98 | * 返回当前移动终端的唯一标识 99 | *
100 | * 如果是GSM网络,返回IMEI; 101 | * 如果是CDMA网络,返回MEID; 102 | * 权限: 获取DEVICE_ID需要READ_PHONE_STATE权限 103 | *104 | */ 105 | public String getDeviceId(){ 106 | final String deviceId = sTelephonyManager.getDeviceId(); 107 | return TextUtils.isEmpty(deviceId) ? "" : deviceId; 108 | } 109 | 110 | /** 111 | * 返回手机号码 112 | * @return 113 | */ 114 | public String getNumber(){ 115 | final String number = sTelephonyManager.getLine1Number(); 116 | return TextUtils.isEmpty(number) ? "" : number; 117 | } 118 | /** 119 | * 返回用户唯一标识,比如GSM网络的IMSI编号 120 | * @return 121 | */ 122 | public String getSubscriberId(){ 123 | final String subscriberId = sTelephonyManager.getSubscriberId(); 124 | return TextUtils.isEmpty(subscriberId) ? "" : subscriberId; 125 | } 126 | 127 | /** 128 | * 获取IMSI 129 | * @return 130 | */ 131 | public String getIMSI(){ 132 | return getSubscriberId(); 133 | } 134 | 135 | /** 136 | * 返回设备的当前位置 137 | *
Requires Permission: 138 | * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or 139 | * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION}. 140 | * @return GsmCellLocation 141 | */ 142 | public GsmCellLocation getGsmCellLocation(){ 143 | return (GsmCellLocation) sTelephonyManager.getCellLocation(); 144 | } 145 | 146 | /** 147 | * 返回手机服务商名字 148 | *
149 | * 46000 中国移动 (GSM) 150 | * 46001 中国联通 (GSM) 151 | * 46002 中国移动 (TD-S) 152 | * 46003 中国电信 (CDMA) 153 | * 46005 中国电信 (CDMA) 154 | * 46006 中国联通 (WCDMA) 155 | * 46007 中国移动 (TD-S) 156 | * 46011 中国电信 (FDD-LTE) 157 | *158 | */ 159 | public String getProvidersName() { 160 | String providersName = null; 161 | //IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。 162 | String imsi = getSubscriberId(); 163 | if (imsi.startsWith("46000") || imsi.startsWith("46002") || imsi.startsWith("46007")) { 164 | providersName = "中国移动"; 165 | } else if (imsi.startsWith("46001") || imsi.startsWith("46006")) { 166 | providersName = "中国联通"; 167 | } else if (imsi.startsWith("46003") || imsi.startsWith("46005") || imsi.startsWith("46011")) { 168 | providersName = "中国电信"; 169 | } else { 170 | providersName = "其它服务商"; 171 | } 172 | return providersName; 173 | } 174 | /** 175 | * 返回SIM卡的序列号(IMEI) 176 | * 注意:对于CDMA设备,返回的是一个空值! 177 | * @return 178 | */ 179 | public String getSimSerialNumber(){ 180 | final String simSerialNumber = sTelephonyManager.getSimSerialNumber(); 181 | return TextUtils.isEmpty(simSerialNumber) ? "" : simSerialNumber; 182 | } 183 | 184 | 185 | /** 186 | * 返回序列号 187 | * 188 | * @return 189 | */ 190 | public String getSerialNumber(){ 191 | final String serialNumber = android.os.Build.SERIAL; 192 | return TextUtils.isEmpty(serialNumber) ? "" : serialNumber; 193 | } 194 | 195 | /** 196 | * 返回移动终端的类型 197 | *
198 | * 0:PHONE_TYPE_NONE 手机制式未知,可能是平板 199 | * 1:PHONE_TYPE_GSM 手机制式为GSM,移动和联通 200 | * 2:PHONE_TYPE_CDMA 手机制式为CDMA,电信 201 | *202 | */ 203 | public int getPhoneType(){ 204 | return sTelephonyManager.getPhoneType(); 205 | } 206 | /** 207 | * 获取网络类型 208 | *
209 | * NETWORK_TYPE_CDMA 网络类型为CDMA 210 | * NETWORK_TYPE_EDGE 网络类型为EDGE 211 | * NETWORK_TYPE_EVDO_0 网络类型为EVDO0 212 | * NETWORK_TYPE_EVDO_A 网络类型为EVDOA 213 | * NETWORK_TYPE_GPRS 网络类型为GPRS 214 | * NETWORK_TYPE_HSDPA 网络类型为HSDPA 215 | * NETWORK_TYPE_HSPA 网络类型为HSPA 216 | * NETWORK_TYPE_HSUPA 网络类型为HSUPA 217 | * NETWORK_TYPE_UMTS 网络类型为UMTS 218 | * 219 | * 在国内, 220 | * 联通的3G为UMTS或HSDPA, 221 | * 移动和联通的2G为GPRS或EGDE, 222 | * 电信的2G为CDMA, 223 | * 电信的3G为EVDO 224 | *225 | */ 226 | public int getNetworkType(){ 227 | return sTelephonyManager.getNetworkType(); 228 | } 229 | 230 | 231 | /** 手机品牌 */ 232 | public String getBrand(){ return Build.BRAND; } 233 | 234 | /** 手机型号 */ 235 | public String getModel(){ return Build.MODEL; } 236 | 237 | /** sdk版本 */ 238 | public int getSdkVersion(){ return Build.VERSION.SDK_INT; } 239 | 240 | /** 系统版本 */ 241 | public String getUserVersion(){ return Build.VERSION.RELEASE; } 242 | 243 | /** 硬件名称 */ 244 | public String getHardware(){ return Build.HARDWARE; } 245 | 246 | 247 | } 248 | --------------------------------------------------------------------------------