|
| 1 | +## Android开发人员不得不收集的代码([持续更新中][update_log.md]) |
| 2 | +*** |
| 3 | +为方便查找,已进行大致归类,其目录如下所示: |
| 4 | +> - **App相关→[AppUtils.java][app.java]** |
| 5 | +> - 安装App *installApp* |
| 6 | +> - 卸载指定包名的App *uninstallApp* |
| 7 | +> - 获取当前App信息 *getAppInfo* |
| 8 | +> - 获取所有已安装App信息 *getAllAppsInfo* |
| 9 | +> - 根据包名判断App是否安装 *isInstallApp* |
| 10 | +> - 打开指定包名的App *openAppByPackageName* |
| 11 | +> - 打开指定包名的App应用信息界面 *openAppInfo* |
| 12 | +> - 可用来做App信息分享 *shareAppInfo* |
| 13 | +> - 判断当前App处于前台还是后台 *isAppBackground* |
| 14 | +
|
| 15 | +> - **常量相关→[ConstUtils.java][const.java]** |
| 16 | +> - 存储相关常量 |
| 17 | +> - 时间相关常量 |
| 18 | +> - 正则相关常量 |
| 19 | +
|
| 20 | +> - **转换相关→[ConvertUtils.java][convert.java]→[Test][convert.test]** |
| 21 | +> - byteArr与hexString互转 *bytes2HexString*、*hexString2Bytes* |
| 22 | +> - charArr与byteArr互转 *chars2Bytes*、*bytes2Chars* |
| 23 | +> - inputStream与outputStream互转 *input2OutputStream*、*output2InputStream* |
| 24 | +> - inputStream与byteArr互转 *inputStream2Bytes*、*bytes2InputStream* |
| 25 | +> - outputStream与byteArr互转 *outputStream2Bytes*、*bytes2OutputStream* |
| 26 | +> - inputStream与string按编码互转 *inputStream2String*、*string2InputStream* |
| 27 | +> - outputStream与string按编码互转 *outputStream2String*、*string2OutputStream* |
| 28 | +> - bitmap与byteArr互转 *bitmap2Bytes*、*bytes2Bitmap* |
| 29 | +> - drawable与bitmap互转 *drawable2Bitmap*、*bitmap2Drawable* |
| 30 | +> - drawable与byteArr互转 *drawable2Bytes*、*bytes2Drawable* |
| 31 | +> - dp与px互转 *dp2px*、*px2dp* |
| 32 | +> - sp与px互转 *sp2px*、*px2sp* |
| 33 | +
|
| 34 | +> - **设备相关→[DeviceUtils.java][device.java]** |
| 35 | +> - 获取设备MAC地址 *getMacAddress* |
| 36 | +> - 获取设备厂商,如Xiaomi *getManufacturer* |
| 37 | +> - 获取设备型号,如MI2SC *getModel* |
| 38 | +
|
| 39 | +> - **编码解码相关→[EncodeUtils.java][encode.java]→[Test][encode.test]** |
| 40 | +> - URL编码 *urlEncode* |
| 41 | +> - URL解码 *urlDecode* |
| 42 | +> - Base64编码 *base64Encode*、*base64Encode2String* |
| 43 | +> - Base64解码 *base64Decode* |
| 44 | +> - Base64URL安全编码 *base64UrlSafeEncode* |
| 45 | +> - Html编码 *htmlEncode* |
| 46 | +> - Html解码 *htmlDecode* |
| 47 | +
|
| 48 | +> - **加密解密相关→[EncryptUtils.java][encrypt.java]→[Test][encrypt.test]** |
| 49 | +> - MD2加密 *encryptMD2ToString*、*encryptMD2* |
| 50 | +> - MD5加密 *encryptMD5ToString*、*encryptMD5* |
| 51 | +> - SHA1加密 *encryptSHA1ToString*、*encryptSHA1* |
| 52 | +> - SHA224加密 *encryptSHA224ToString*、*encryptSHA224* |
| 53 | +> - SHA256加密 *encryptSHA256ToString*、*encryptSHA256* |
| 54 | +> - SHA384加密 *encryptSHA384ToString*、*encryptSHA384* |
| 55 | +> - SHA512加密 *encryptSHA512ToString*、*encryptSHA512* |
| 56 | +> - 获取文件的MD5校验码 *encryptMD5File2String*、*encryptMD5File* |
| 57 | +> - DES加密后转为Base64编码 *encryptDES2Base64* |
| 58 | +> - DES加密后转为16进制 *encryptDES2HexString* |
| 59 | +> - DES加密 *encryptDES* |
| 60 | +> - DES解密Base64编码密文 *decryptBase64DES* |
| 61 | +> - DES解密16进制密文 *decryptHexStringDES* |
| 62 | +> - DES解密 *decryptDES* |
| 63 | +> - 3DES加密后转为Base64编码 *encrypt3DES2Base64* |
| 64 | +> - 3DES加密后转为16进制 *encrypt3DES2HexString* |
| 65 | +> - 3DES加密 *encrypt3DES* |
| 66 | +> - 3DES解密Base64编码密文 *decryptBase64_3DES* |
| 67 | +> - 3DES解密16进制密文 *decryptHexString3DES* |
| 68 | +> - 3DES解密 *decrypt3DES* |
| 69 | +> - AES加密后转为Base64编码 *encryptAES2Base64* |
| 70 | +> - AES加密后转为16进制 *encryptAES2HexString* |
| 71 | +> - AES加密 *encryptAES* |
| 72 | +> - AES解密Base64编码密文 *decryptBase64AES* |
| 73 | +> - AES解密16进制密文 *decryptHexStringAES* |
| 74 | +> - AES解密 *decryptAES* |
| 75 | +
|
| 76 | +> - **文件相关→[FileUtils.java][file.java]→[Test][file.test]** |
| 77 | +> - 根据文件路径获取文件 *getFileByPath* |
| 78 | +> - 判断文件是否存在 *isFileExists* |
| 79 | +> - 判断是否是目录 *isDir* |
| 80 | +> - 判断是否是文件 *isFile* |
| 81 | +> - 判断目录是否存在,不存在则判断是否创建成功 *createOrExistsDir* |
| 82 | +> - 判断文件是否存在,不存在则判断是否创建成功 *createOrExistsFile* |
| 83 | +> - 判断文件是否存在,存在则在创建之前删除 *createFileByDeleteOldFile* |
| 84 | +> - 复制目录 *copyDir* |
| 85 | +> - 复制文件 *copyFile* |
| 86 | +> - 移动目录 *moveDir* |
| 87 | +> - 移动文件 *moveFile* |
| 88 | +> - 删除目录 *deleteDir* |
| 89 | +> - 删除文件 *deleteFile* |
| 90 | +> - 获取目录下所有文件 *listFilesInDir* |
| 91 | +> - 获取目录下所有文件包括子目录 *listFilesInDir* |
| 92 | +> - 获取目录下所有后缀名为suffix的文件 *listFilesInDirWithFilter* |
| 93 | +> - 获取目录下所有后缀名为suffix的文件包括子目录 *listFilesInDirWithFilter* |
| 94 | +> - 获取目录下所有符合filter的文件 *listFilesInDirWithFilter* |
| 95 | +> - 获取目录下所有符合filter的文件包括子目录 *listFilesInDirWithFilter* |
| 96 | +> - 获取目录下指定文件名的文件包括子目录 *searchFileInDir* |
| 97 | +> - 将输入流写入文件 *writeFileFromIS* |
| 98 | +> - 将字符串写入文件 *writeFileFromString* |
| 99 | +> - 简单获取文件编码格式 *getFileCharsetSimple* |
| 100 | +> - 获取文件行数 *getFileLines* |
| 101 | +> - 指定编码按行读取文件到List *readFile2List* |
| 102 | +> - 指定编码按行读取文件到StringBuilder中 *readFile2SB* |
| 103 | +> - 字节数转以unit为单位的size *byte2Size* |
| 104 | +> - 以unit为单位的size转字节数 *size2Byte* |
| 105 | +> - 获取文件大小 *getFileSize* |
| 106 | +> - 关闭IO *closeIO* |
| 107 | +> - 根据全路径获取最长目录 *getDirName* |
| 108 | +> - 根据全路径获取文件名 *getFileName* |
| 109 | +> - 根据全路径获取文件名不带拓展名 *getFileNameNoExtension* |
| 110 | +> - 根据全路径获取文件拓展名 *getFileExtension* |
| 111 | +
|
| 112 | +> - **图片相关→[ImageUtils.java][image.java]** |
| 113 | +> - bitmap与byteArr互转 *bitmap2Bytes*、*bytes2Bitmap* |
| 114 | +> - drawable与bitmap互转 *drawable2Bitmap*、*bitmap2Drawable* |
| 115 | +> - drawable与byteArr互转 *drawable2Bytes*、*bytes2Drawable* |
| 116 | +> - 获取bitmap *getBitmap* |
| 117 | +> - 缩放图片 *scale* |
| 118 | +> - 裁剪图片 *clip* |
| 119 | +> - 倾斜图片 *skew* |
| 120 | +> - 旋转图片 *rotate* |
| 121 | +> - 获取图片旋转角度 *getRotateDegree* |
| 122 | +> - 转为圆形图片 *toRound* |
| 123 | +> - 转为圆角图片 *toRoundCorner* |
| 124 | +> - 快速模糊 *fastBlur* |
| 125 | +> - renderScript模糊图片 *renderScriptBlur* |
| 126 | +> - stack模糊图片 *stackBlur* |
| 127 | +> - 添加颜色边框 *addFrame* |
| 128 | +> - 添加倒影 *addReflection* |
| 129 | +> - 添加文字水印 *addTextWatermark* |
| 130 | +> - 添加图片水印 *addImageWatermark* |
| 131 | +> - 转为alpha位图 *toAlpha* |
| 132 | +> - 转为灰度图片 *toGray* |
| 133 | +> - 保存图片 *save* |
| 134 | +> - 根据文件名判断文件是否为图片 *isImage* |
| 135 | +> - 获取图片类型 *getImageType* |
| 136 | +> - 按缩放压缩 *compressByScale* |
| 137 | +> - 按质量压缩 *compressByQuality* |
| 138 | +> - 按采样大小压缩 *compressBySampleSize* |
| 139 | +
|
| 140 | +> - **键盘相关→[KeyboardUtils.java][keyboard.java]** |
| 141 | +> - 避免输入法面板遮挡 |
| 142 | +> - 动态隐藏软键盘 *hideSoftInput* |
| 143 | +> - 点击屏幕空白区域隐藏软键盘(注释萌萌哒) *clickBlankArea2HideSoftInput0* |
| 144 | +> - 动态显示软键盘 *showSoftInput* |
| 145 | +> - 切换键盘显示与否状态 *toggleSoftInput* |
| 146 | +
|
| 147 | +> - **网络相关→[NetworkUtils.java][network.java]** |
| 148 | +> - 打开网络设置界面 *openWirelessSettings* |
| 149 | +> - 判断网络是否可用 *isAvailable* |
| 150 | +> - 判断网络是否连接 *isConnected* |
| 151 | +> - 判断网络是否是4G *is4G* |
| 152 | +> - 判断wifi是否连接状态 *isWifiConnected* |
| 153 | +> - 获取移动网络运营商名称 *getNetworkOperatorName* |
| 154 | +> - 获取移动终端类型 *getPhoneType* |
| 155 | +> - 获取当前的网络类型(WIFI,2G,3G,4G) *getNetWorkType*、*getNetWorkTypeName* |
| 156 | +
|
| 157 | +> - **手机相关→[PhoneUtils.java][phone.java]** |
| 158 | +> - 判断设备是否是手机 *isPhone* |
| 159 | +> - 获取手机的IMIE *getPhoneIMEI* |
| 160 | +> - 获取手机状态信息 *getPhoneStatus* |
| 161 | +> - 跳至填充好phoneNumber的拨号界面 *dial* |
| 162 | +> - 拨打phoneNumber *call* |
| 163 | +> - 发送短信 *sendSms* |
| 164 | +> - 获取手机联系人 *getAllContactInfo* |
| 165 | +> - 打开手机联系人界面点击联系人后便获取该号码(注释萌萌哒) *getContantNum* |
| 166 | +> - 获取手机短信并保存到xml中 *getAllSMS* |
| 167 | +
|
| 168 | +> - **正则相关→[RegexUtils.java][regex.java]→[Test][regex.test]** |
| 169 | +> - 验证手机号(简单) *isMobileSimple* |
| 170 | +> - 验证手机号(精确) *isMobileExact* |
| 171 | +> - 验证电话号码 *isTel* |
| 172 | +> - 验证身份证号码15位 *isIDCard15* |
| 173 | +> - 验证身份证号码18位 *isIDCard18* |
| 174 | +> - 验证邮箱 *isEmail* |
| 175 | +> - 验证URL *isURL* |
| 176 | +> - 验证汉字 *isChz* |
| 177 | +> - 验证用户名 *isUsername* |
| 178 | +> - 验证yyyy-MM-dd格式的日期校验,已考虑平闰年 *isDate* |
| 179 | +> - 验证IP地址 *isIP* |
| 180 | +> - string是否匹配regex *isMatch* |
| 181 | +
|
| 182 | +> - **屏幕相关→[ScreenUtils.java][screen.java]** |
| 183 | +> - 获取手机分辨率 *getDeviceWidth*、*getDeviceHeight* |
| 184 | +> - 设置透明状态栏(api大于19方可使用) *setTransparentStatusBar* |
| 185 | +> - 隐藏状态栏(注释萌萌哒) *hideStatusBar* |
| 186 | +> - 获取状态栏高度 *getStatusBarHeight* |
| 187 | +> - 判断状态栏是否存在 *isStatusBarExists* |
| 188 | +> - 获取ActionBar高度 *getActionBarHeight* |
| 189 | +> - 显示通知栏 *showNotificationBar* |
| 190 | +> - 隐藏通知栏 *hideNotificationBar* |
| 191 | +> - 设置屏幕为横屏(注释萌萌哒) *setLandscape* |
| 192 | +> - 获取屏幕截图 *snapShotWithStatusBar*、*snapShotWithoutStatusBar* |
| 193 | +> - 判断是否锁屏 *isScreenLock* |
| 194 | +
|
| 195 | +> - **SD卡相关→[SDCardUtils.java][sdcard.java]** |
| 196 | +> - 判断SD卡是否可用 *isSDCardEnable* |
| 197 | +> - 获取SD卡路径 *getSDCardPath* |
| 198 | +> - 获取SD卡Data路径 *getDataPath* |
| 199 | +> - 计算SD卡的剩余空间 *getFreeSpace* |
| 200 | +
|
| 201 | +> - **Shell相关→[ShellUtils.java][shell.java]** |
| 202 | +> - 判断设备是否root *isRoot* |
| 203 | +> - 是否是在root下执行命令 *execCmd* |
| 204 | +
|
| 205 | +> - **尺寸相关→[SizeUtils.java][size.java]** |
| 206 | +> - dp与px转换 *dp2px*、*px2dp* |
| 207 | +> - sp与px转换 *sp2px*、*px2sp* |
| 208 | +> - 各种单位转换 *applyDimension* |
| 209 | +> - 在onCreate()即可强行获取View的尺寸 *forceGetViewSize* |
| 210 | +> - ListView中提前测量View尺寸(注释萌萌哒) *measureView* |
| 211 | +
|
| 212 | +> - **SP相关→[SPUtils.java][sp.java]→[Test][sp.test]** |
| 213 | +> - SPUtils构造函数 *SPUtils* |
| 214 | +> - SP中写入String类型value *putString* |
| 215 | +> - SP中读取String *getString* |
| 216 | +> - SP中写入int类型value *putInt* |
| 217 | +> - SP中读取int *getInt* |
| 218 | +> - SP中写入long类型value *putLong* |
| 219 | +> - SP中读取long *getLong* |
| 220 | +> - SP中写入float类型value *putFloat* |
| 221 | +> - SP中读取float *getFloat* |
| 222 | +> - SP中写入boolean类型value *putBoolean* |
| 223 | +> - SP中读取boolean *getBoolean* |
| 224 | +> - 获取SP中所有键值对 *getAll* |
| 225 | +> - 从SP中移除该key *remove* |
| 226 | +> - 判断SP中是否存在该key *contains* |
| 227 | +> - 清除SP中所有数据 *clear* |
| 228 | +
|
| 229 | +> - **字符串相关→[StringUtils.java][string.java]→[Test][string.test]** |
| 230 | +> - 判断字符串是否为null或长度为0 *isEmpty* |
| 231 | +> - 判断字符串是否为null或全为空格 *isSpace* |
| 232 | +> - null转为长度为0的字符串 *null2Length0* |
| 233 | +> - 返回字符串长度 *length* |
| 234 | +> - 首字母大写 *upperFirstLetter* |
| 235 | +> - 首字母小写 *lowerFirstLetter* |
| 236 | +> - 反转字符串 *reverse* |
| 237 | +> - 转化为半角字符 *toDBC* |
| 238 | +> - 转化为全角字符 *toSBC* |
| 239 | +
|
| 240 | +> - **线程池相关工具类→[ThreadPoolUtils.java][thread_pool.java]** |
| 241 | +> - ThreadPoolUtils构造函数 *ThreadPoolUtils* |
| 242 | +> - 在未来某个时间执行给定的命令 *execute* |
| 243 | +> - 在未来某个时间执行给定的命令链表 *execute* |
| 244 | +> - 待以前提交的任务执行完毕后关闭线程池 *shutDown* |
| 245 | +> - 试图停止所有正在执行的活动任务 *shutDownNow* |
| 246 | +> - 判断线程池是否已关闭 *isShutDown* |
| 247 | +> - 关闭线程池后判断所有任务是否都已完成 *isTerminated* |
| 248 | +> - 请求关闭、发生超时或者当前线程中断 *awaitTermination* |
| 249 | +> - 提交一个Callable任务用于执行 *submit* |
| 250 | +> - 提交一个Runnable任务用于执行 *submit* |
| 251 | +> - 执行给定的任务 *invokeAll*、*invokeAny* |
| 252 | +> - 延迟执行Runnable命令 *schedule* |
| 253 | +> - 延迟执行Callable命令 *schedule* |
| 254 | +> - 延迟并循环执行命令 *scheduleWithFixedRate*、*scheduleWithFixedDelay* |
| 255 | +
|
| 256 | +> - **时间相关→[TimeUtils.java][time.java]→[Test][time.test]** |
| 257 | +> - 将时间戳转为时间字符串 *milliseconds2String* |
| 258 | +> - 将时间字符串转为时间戳 *string2Milliseconds* |
| 259 | +> - 将时间字符串转为Date类型 *string2Date* |
| 260 | +> - 将Date类型转为时间字符串 *date2String* |
| 261 | +> - 将Date类型转为时间戳 *date2Milliseconds* |
| 262 | +> - 将时间戳转为Date类型 *milliseconds2Date* |
| 263 | +> - 毫秒时间戳单位转换(单位:unit) *milliseconds2Unit* |
| 264 | +> - 获取两个时间差(单位:unit) *getIntervalTime* |
| 265 | +> - 获取当前时间 *getCurTimeMills*、*getCurTimeString*、*getCurTimeDate* |
| 266 | +> - 获取与当前时间的差(单位:unit) *getIntervalByNow* |
| 267 | +> - 判断闰年 *isLeapYear* |
| 268 | +
|
| 269 | +> - **未归类→[UnclassifiedUtils.java][unclassified.java]** |
| 270 | +> - 获取服务是否开启 *isRunningService* |
| 271 | +
|
| 272 | +> - **压缩相关工具类→[ZipUtils.java][zip.java]→[Test][zip.test]** |
| 273 | +> - 批量压缩文件 *zipFiles* |
| 274 | +> - 压缩文件 *zipFile* |
| 275 | +> - 批量解压文件 *unzipFiles* |
| 276 | +> - 解压文件 *unzipFile* |
| 277 | +> - 解压带有关键字的文件 *unzipFileByKeyword* |
| 278 | +> - 获取压缩文件中的文件路径链表 *getFilePathInZip* |
| 279 | +> - 获取压缩文件中的注释链表 *getComments* |
| 280 | +> - 获取压缩文件中的文件对象 *getEntries* |
| 281 | +
|
| 282 | +> - **更新Log→[update_log.md][update_log.md]** |
| 283 | +
|
| 284 | +*** |
| 285 | + |
| 286 | +**做这份整理是想把它作为Android开发的小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走;同时也希望它能逐日壮大起来,期待大家的Star和完善,当然我也会一直更新发布版本和日志,为了方便大家导入,现已上传jcenter;其中很多代码也是汇四方之精华,谢谢前辈们的提供,当然最终还是要通过单元测试的,如有错误,请及时告之;开设QQ群提供讨论,群号:74721490,至于验证问题对大家来说肯定都是小case;** |
| 287 | + |
| 288 | +### Download |
| 289 | +*** |
| 290 | +Gradle: |
| 291 | +``` groovy |
| 292 | +compile 'com.blankj:utilcode:1.1.5' |
| 293 | +``` |
| 294 | + |
| 295 | +### Proguard |
| 296 | +*** |
| 297 | +``` |
| 298 | +-keep class com.blankj.utilcode.** { *; } |
| 299 | +-keep classmembers class com.blankj.utilcode.** { *; } |
| 300 | +-dontwarn com.blankj.utilcode.** |
| 301 | +``` |
| 302 | + |
| 303 | +### License |
| 304 | +*** |
| 305 | +``` |
| 306 | +Copyright 2016 Blankj |
| 307 | +
|
| 308 | +Licensed under the Apache License, Version 2.0 (the "License"); |
| 309 | +you may not use this file except in compliance with the License. |
| 310 | +You may obtain a copy of the License at |
| 311 | +
|
| 312 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 313 | +
|
| 314 | +Unless required by applicable law or agreed to in writing, software |
| 315 | +distributed under the License is distributed on an "AS IS" BASIS, |
| 316 | +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 317 | +See the License for the specific language governing permissions and |
| 318 | +limitations under the License. |
| 319 | +``` |
| 320 | + |
| 321 | +[app.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/AppUtils.java |
| 322 | + |
| 323 | +[const.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ConstUtils.java |
| 324 | + |
| 325 | +[convert.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ConvertUtils.java |
| 326 | +[convert.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/ConvertUtilsTest.java |
| 327 | + |
| 328 | +[device.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/DeviceUtils.java |
| 329 | + |
| 330 | +[encode.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncodeUtils.java |
| 331 | +[encode.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/EncodeUtilsTest.java |
| 332 | + |
| 333 | +[encrypt.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncryptUtils.java |
| 334 | +[encrypt.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/EncryptUtilsTest.java |
| 335 | + |
| 336 | +[file.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/FileUtils.java |
| 337 | +[file.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/FileUtilsTest.java |
| 338 | + |
| 339 | +[image.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ImageUtils.java |
| 340 | + |
| 341 | +[keyboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/KeyboardUtils.java |
| 342 | + |
| 343 | +[network.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/NetworkUtils.java |
| 344 | + |
| 345 | +[phone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/PhoneUtils.java |
| 346 | + |
| 347 | +[regular.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/RegexUtils.java |
| 348 | +[regular.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/RegexUtilsTest.java |
| 349 | + |
| 350 | +[screen.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ScreenUtils.java |
| 351 | + |
| 352 | +[sdcard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SDCardUtils.java |
| 353 | + |
| 354 | +[shell.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ShellUtils.java |
| 355 | + |
| 356 | +[size.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SizeUtils.java |
| 357 | + |
| 358 | +[sp.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SPUtils.java |
| 359 | +[sp.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/SPUtilsTest.java |
| 360 | + |
| 361 | +[string.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/StringUtils.java |
| 362 | +[string.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/StringUtilsTest.java |
| 363 | + |
| 364 | +[thread_pool.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ThreadPoolUtils.java |
| 365 | + |
| 366 | +[time.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/TimeUtils.java |
| 367 | +[time.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/TimeUtilsTest.java |
| 368 | + |
| 369 | +[unclassified.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/UnclassifiedUtils.java |
| 370 | + |
| 371 | +[zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ZipUtils.java |
| 372 | +[zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/ZipUtilsTest.java |
| 373 | + |
| 374 | +[update_log.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md |
0 commit comments