AndroidUtils:Android開發不得不收藏的Utils

AndroidUtils:Android開發不得不收藏的Utils - Android開發社區 | CTOLib碼庫

    1. AndroidUtils

AndroidUtils Android開發不得不收藏的Utils
之前寫這篇文章主要是項目應用到的Utils,發現已經有一個更全面的開源庫總結,所以還是非常震驚可以總結的這么全面,在此我準備重新梳理一遍~

AndroidUtils:Android必備utilCode

具體Demo使用參考開源github:AndroidUtilCode。本文只是稍微記錄下方便自己查閱。

  • Activity相關→ActivityUtils.java
isActivityExists   : 判斷是否存在Activity
launchActivity     : 打開Activity
getLauncherActivity: 獲取入口activity
  • App相關→AppUtils.java
isInstallApp         : 判斷App是否安裝
installApp           : 安裝App(支持6.0)
installAppSilent     : 靜默安裝App
uninstallApp         : 卸載App
uninstallAppSilent   : 靜默卸載App
isAppRoot            : 判斷App是否有root權限
launchApp            : 打開App
getAppPackageName    : 獲取App包名
getAppDetailsSettings: 獲取App具體設置
getAppName           : 獲取App名稱
getAppIcon           : 獲取App圖標
getAppPath           : 獲取App路徑
getAppVersionName    : 獲取App版本號
getAppVersionCode    : 獲取App版本碼
isSystemApp          : 判斷App是否是系統應用
isAppDebug           : 判斷App是否是Debug版本
getAppSignature      : 獲取App簽名
getAppSignatureSHA1  : 獲取應用簽名的的SHA1值
isAppForeground      : 判斷App是否處于前臺
getForegroundApp     : 獲取前臺應用包名
getAppInfo           : 獲取App信息
getAppsInfo          : 獲取所有已安裝App信息
cleanAppData         : 清除App所有數據
  • 狀態欄相關→BarUtils.java
setTransparentStatusBar: 設置透明狀態欄(api大于19方可使用)
hideStatusBar          : 隱藏狀態欄
getStatusBarHeight     : 獲取狀態欄高度
isStatusBarExists      : 判斷狀態欄是否存在
getActionBarHeight     : 獲取ActionBar高度
showNotificationBar    : 顯示通知欄
hideNotificationBar    : 隱藏通知欄
  • 清除相關→CleanUtils.java
cleanInternalCache   : 清除內部緩存
cleanInternalFiles   : 清除內部文件
cleanInternalDbs     : 清除內部數據庫
cleanInternalDbByName: 根據名稱清除數據庫
cleanInternalSP      : 清除內部SP
cleanExternalCache   : 清除外部緩存
cleanCustomCache     : 清除自定義目錄下的文件
  • 剪貼板相關→ClipboardUtils.java
copyText  : 復制文本到剪貼板
getText   : 獲取剪貼板的文本
copyUri   : 復制uri到剪貼板
getUri    : 獲取剪貼板的uri
copyIntent: 復制意圖到剪貼板
getIntent : 獲取剪貼板的意圖
  • 關閉相關→CloseUtils.java
closeIO       : 關閉IO
closeIOQuietly: 安靜關閉IO
  • 常量相關→ConstUtils.java
MemoryConst: 存儲相關常量(KB,MB,GB)
TimeConst  : 時間相關常量
RegexConst : 正則相關常量
  • 轉換相關→ConvertUtils.java
bytes2HexString, hexString2Bytes        : byteArr與hexString互轉
chars2Bytes, bytes2Chars                : charArr與byteArr互轉
memorySize2Byte, byte2MemorySize        : 以unit為單位的內存大小與字節數互轉
byte2FitMemorySize                      : 字節數轉合適內存大小
timeSpan2Millis, millis2TimeSpan        : 以unit為單位的時間長度與毫秒時間戳互轉
millis2FitTimeSpan                      : 毫秒時間戳轉合適時間長度
bytes2Bits, bits2Bytes                  : bytes與bits互轉
input2OutputStream, output2InputStream  : inputStream與outputStream互轉
inputStream2Bytes, bytes2InputStream    : inputStream與byteArr互轉
outputStream2Bytes, bytes2OutputStream  : outputStream與byteArr互轉
inputStream2String, string2InputStream  : inputStream與string按編碼互轉
outputStream2String, string2OutputStream: outputStream與string按編碼互轉
bitmap2Bytes, bytes2Bitmap              : bitmap與byteArr互轉
drawable2Bitmap, bitmap2Drawable        : drawable與bitmap互轉
drawable2Bytes, bytes2Drawable          : drawable與byteArr互轉
view2Bitmap                             : view轉Bitmap
dp2px, px2dp                            : dp與px互轉
sp2px, px2sp                            : sp與px互轉
  • 崩潰相關→CrashUtils.java
getInstance: 獲取單例
init       : 初始化
  • 設備相關→DeviceUtils.java
isDeviceRooted   : 判斷設備是否rooted
getSDKVersion    : 獲取設備系統版本號
getAndroidID     : 獲取設備AndroidID
getMacAddress    : 獲取設備MAC地址
getManufacturer  : 獲取設備廠商
getModel         : 獲取設備型號
shutdown         : 關機
reboot           : 重啟
reboot2Recovery  : 重啟到recovery
reboot2Bootloader: 重啟到bootloader
  • 判空相關→EmptyUtils.java
isEmpty   : 判斷對象是否為空
isNotEmpty: 判斷對象是否非空
  • 編碼解碼相關→EncodeUtils.java
urlEncode          : URL編碼
urlDecode          : URL解碼
base64Encode       : Base64編碼
base64Encode2String: Base64編碼
base64Decode       : Base64解碼
base64UrlSafeEncode: Base64URL安全編碼
htmlEncode         : Html編碼
htmlDecode         : Html解碼
  • 加密解密相關→EncryptUtils.java
encryptMD2, encryptMD2ToString                        : MD2加密
encryptMD5, encryptMD5ToString                        : MD5加密
encryptMD5File, encryptMD5File2String                 : MD5加密文件
encryptSHA1, encryptSHA1ToString                      : SHA1加密
encryptSHA224, encryptSHA224ToString                  : SHA224加密
encryptSHA256, encryptSHA256ToString                  : SHA256加密
encryptSHA384, encryptSHA384ToString                  : SHA384加密
encryptSHA512, encryptSHA512ToString                  : SHA512加密
encryptHmacMD5, encryptHmacMD5ToString                : HmacMD5加密
encryptHmacSHA1, encryptHmacSHA1ToString              : HmacSHA1加密
encryptHmacSHA224, encryptHmacSHA224ToString          : HmacSHA224加密
encryptHmacSHA256, encryptHmacSHA256ToString          : HmacSHA256加密
encryptHmacSHA384, encryptHmacSHA384ToString          : HmacSHA384加密
encryptHmacSHA512, encryptHmacSHA512ToString          : HmacSHA512加密
encryptDES, encryptDES2HexString, encryptDES2Base64   : DES加密
decryptDES, decryptHexStringDES, decryptBase64DES     : DES解密
encrypt3DES, encrypt3DES2HexString, encrypt3DES2Base64: 3DES加密
decrypt3DES, decryptHexString3DES, decryptBase64_3DES : 3DES解密
encryptAES, encryptAES2HexString, encryptAES2Base64   : AES加密
decryptAES, decryptHexStringAES, decryptBase64AES     : AES解密
  • 文件相關→FileUtils.java
getFileByPath            : 根據文件路徑獲取文件
isFileExists             : 判斷文件是否存在
rename                   : 重命名文件
isDir                    : 判斷是否是目錄
isFile                   : 判斷是否是文件
createOrExistsDir        : 判斷目錄是否存在,不存在則判斷是否創建成功
createOrExistsFile       : 判斷文件是否存在,不存在則判斷是否創建成功
createFileByDeleteOldFile: 判斷文件是否存在,存在則在創建之前刪除
copyDir                  : 復制目錄
copyFile                 : 復制文件
moveDir                  : 移動目錄
moveFile                 : 移動文件
deleteDir                : 刪除目錄
deleteFile               : 刪除文件
listFilesInDir           : 獲取目錄下所有文件
listFilesInDir           : 獲取目錄下所有文件包括子目錄
listFilesInDirWithFilter : 獲取目錄下所有后綴名為suffix的文件
listFilesInDirWithFilter : 獲取目錄下所有后綴名為suffix的文件包括子目錄
listFilesInDirWithFilter : 獲取目錄下所有符合filter的文件
listFilesInDirWithFilter : 獲取目錄下所有符合filter的文件包括子目錄
searchFileInDir          : 獲取目錄下指定文件名的文件包括子目錄
writeFileFromIS          : 將輸入流寫入文件
writeFileFromString      : 將字符串寫入文件
readFile2List            : 指定編碼按行讀取文件到鏈表中
readFile2String          : 指定編碼按行讀取文件到字符串中
readFile2Bytes           : 讀取文件到字符數組中
getFileLastModified      : 獲取文件最后修改的毫秒時間戳
getFileCharsetSimple     : 簡單獲取文件編碼格式
getFileLines             : 獲取文件行數
getDirSize               : 獲取目錄大小
getFileSize              : 獲取文件大小
getDirLength             : 獲取目錄長度
getFileLength            : 獲取文件長度
getFileMD5               : 獲取文件的MD5校驗碼
getFileMD5ToString       : 獲取文件的MD5校驗碼
getDirName               : 根據全路徑獲取最長目錄
getFileName              : 根據全路徑獲取文件名
getFileNameNoExtension   : 根據全路徑獲取文件名不帶拓展名
getFileExtension         : 根據全路徑獲取文件拓展名
  • Handler相關→HandlerUtils.java
防止內存泄露Handler(匿名內部類)持有外部類的引用
  • 圖片相關→ImageUtils.java
bitmap2Bytes, bytes2Bitmap      : bitmap與byteArr互轉
drawable2Bitmap, bitmap2Drawable: drawable與bitmap互轉
drawable2Bytes, bytes2Drawable  : drawable與byteArr互轉
getBitmap                       : 獲取bitmap
scale                           : 縮放圖片
clip                            : 裁剪圖片
skew                            : 傾斜圖片
rotate                          : 旋轉圖片
getRotateDegree                 : 獲取圖片旋轉角度
toRound                         : 轉為圓形圖片
toRoundCorner                   : 轉為圓角圖片
fastBlur                        : 快速模糊
renderScriptBlur                : renderScript模糊圖片
stackBlur                       : stack模糊圖片
addFrame                        : 添加顏色邊框
addReflection                   : 添加倒影
addTextWatermark                : 添加文字水印
addImageWatermark               : 添加圖片水印
toAlpha                         : 轉為alpha位圖
toGray                          : 轉為灰度圖片
save                            : 保存圖片
isImage                         : 根據文件名判斷文件是否為圖片
getImageType                    : 獲取圖片類型
compressByScale                 : 按縮放壓縮
compressByQuality               : 按質量壓縮
compressBySampleSize            : 按采樣大小壓縮
  • 意圖相關→IntentUtils.java
getInstallAppIntent        : 獲取安裝App(支持6.0)的意圖
getUninstallAppIntent      : 獲取卸載App的意圖
getLaunchAppIntent         : 獲取打開App的意圖
getAppDetailsSettingsIntent: 獲取App具體設置的意圖
getShareTextIntent         : 獲取分享文本的意圖
getShareImageIntent        : 獲取分享圖片的意圖
getComponentIntent         : 獲取其他應用組件的意圖
getShutdownIntent          : 獲取關機的意圖
getCaptureIntent           : 獲取拍照的意圖
  • 鍵盤相關→KeyboardUtils.java
hideSoftInput               : 動態隱藏軟鍵盤
clickBlankArea2HideSoftInput: 點擊屏幕空白區域隱藏軟鍵盤
showSoftInput               : 動態顯示軟鍵盤
toggleSoftInput             : 切換鍵盤顯示與否狀態
  • 定位相關→LocationUtils.java
isGpsEnabled     : 判斷Gps是否可用
isLocationEnabled: 判斷定位是否可用
openGpsSettings  : 打開Gps設置界面
register         : 注冊
unregister       : 注銷
getAddress       : 根據經緯度獲取地理位置
getCountryName   : 根據經緯度獲取所在國家
getLocality      : 根據經緯度獲取所在地
getStreet        : 根據經緯度獲取所在街道
  • 日志相關→LogUtils.java
init      : 初始化函數
getBuilder: 獲取LogUtils建造者
v         : Verbose日志
d         : Debug日志
i         : Info日志
w         : Warn日志
e         : Error日志
  • 網絡相關→NetworkUtils.java
openWirelessSettings  : 打開網絡設置界面
isConnected           : 判斷網絡是否連接
isAvailableByPing     : 判斷網絡是否可用
getDataEnabled        : 判斷移動數據是否打開
setDataEnabled        : 打開或關閉移動數據
is4G                  : 判斷網絡是否是4G
getWifiEnabled        : 判斷wifi是否打開
setWifiEnabled        : 打開或關閉wifi
isWifiConnected       : 判斷wifi是否連接狀態
isWifiAvailable       : 判斷wifi數據是否可用
getNetworkOperatorName: 獲取移動網絡運營商名稱
getNetworkType        : 獲取當前網絡類型
getIPAddress          : 獲取IP地址
getDomainAddress      : 獲取域名ip地址
  • 手機相關→PhoneUtils.java
isPhone            : 判斷設備是否是手機
getIMEI            : 獲取IMEI碼
getIMSI            : 獲取IMSI碼
getPhoneType       : 獲取移動終端類型
isSimCardReady     : 判斷sim卡是否準備好
getSimOperatorName : 獲取Sim卡運營商名稱
getSimOperatorByMnc: 獲取Sim卡運營商名稱
getPhoneStatus     : 獲取手機狀態信息
dial               : 跳至撥號界面
call               : 撥打phoneNumber
sendSms            : 跳至發送短信界面
sendSmsSilent      : 發送短信
getAllContactInfo  : 獲取手機聯系人
getContactNum      : 打開手機聯系人界面點擊聯系人后便獲取該號碼
getAllSMS          : 獲取手機短信并保存到xml中
  • 拼音相關→PinyinUtils.java
ccs2Pinyin           : 漢字轉拼音
ccs2Pinyin           : 漢字轉拼音
getPinyinFirstLetter : 獲取第一個漢字首字母
getPinyinFirstLetters: 獲取所有漢字的首字母
getSurnamePinyin     : 根據名字獲取姓氏的拼音
getSurnameFirstLetter: 根據名字獲取姓氏的首字母
  • 進程相關→ProcessUtils.java
getForegroundProcessName  : 獲取前臺線程包名
killAllBackgroundProcesses: 殺死所有的后臺服務進程
killBackgroundProcesses   : 殺死后臺服務進程
  • 正則相關→RegexUtils.java
isMobileSimple : 驗證手機號(簡單)
isMobileExact  : 驗證手機號(精確)
isTel          : 驗證電話號碼
isIDCard15     : 驗證身份證號碼15位
isIDCard18     : 驗證身份證號碼18位
isEmail        : 驗證郵箱
isURL          : 驗證URL
isZh           : 驗證漢字
isUsername     : 驗證用戶名
isDate         : 驗證yyyy-MM-dd格式的日期校驗,已考慮平閏年
isIP           : 驗證IP地址
isMatch        : 判斷是否匹配正則
getMatches     : 獲取正則匹配的部分
getSplits      : 獲取正則匹配分組
getReplaceFirst: 替換正則匹配的第一部分
getReplaceAll  : 替換所有正則匹配的部分
  • 屏幕相關→ScreenUtils.java
getScreenWidth         : 獲取屏幕的寬度(單位:px)
getScreenHeight        : 獲取屏幕的高度(單位:px)
setLandscape           : 設置屏幕為橫屏
setPortrait            : 設置屏幕為豎屏
isLandscape            : 判斷是否橫屏
isPortrait             : 判斷是否豎屏
getScreenRotation      : 獲取屏幕旋轉角度
captureWithStatusBar   : 獲取當前屏幕截圖,包含狀態欄
captureWithoutStatusBar: 獲取當前屏幕截圖,不包含狀態欄
isScreenLock           : 判斷是否鎖屏
  • SD卡相關→SDCardUtils.java
isSDCardEnable: 判斷SD卡是否可用
getSDCardPath : 獲取SD卡路徑
getDataPath   : 獲取SD卡Data路徑
getFreeSpace  : 計算SD卡的剩余空間
getSDCardInfo : 獲取SD卡信息
  • 服務相關→ServiceUtils.java
getAllRunningService: 獲取所有運行的服務
startService        : 啟動服務
stopService         : 停止服務
bindService         : 綁定服務
unbindService       : 解綁服務
isServiceRunning    : 判斷服務是否運行
  • Shell相關→ShellUtils.java
execCmd: 是否是在root下執行命令
  • 尺寸相關→SizeUtils.java
dp2px, px2dp     : dp與px轉換
sp2px, px2sp     : sp與px轉換
applyDimension   : 各種單位轉換
forceGetViewSize : 在onCreate中獲取視圖的尺寸
measureView      : 測量視圖尺寸
getMeasuredWidth : 獲取測量視圖寬度
getMeasuredHeight: 獲取測量視圖高度
Snackbar相關→SnackbarUtils.java
showShortSnackbar     : 顯示短時snackbar
showLongSnackbar      : 顯示長時snackbar
showIndefiniteSnackbar: 顯示自定義時長snackbar
addView               : 為SnackBar添加布局
dismissSnackbar       : 取消snackbar顯示
  • SpannableString相關工具類→SpannableStringUtils.java
getBuilder        : 獲取建造者
setFlag           : 設置標識
setForegroundColor: 設置前景色
setBackgroundColor: 設置背景色
setQuoteColor     : 設置引用線的顏色
setLeadingMargin  : 設置縮進
setBullet         : 設置列表標記
setProportion     : 設置字體比例
setXProportion    : 設置字體橫向比例
setStrikethrough  : 設置刪除線
setUnderline      : 設置下劃線
setSuperscript    : 設置上標
setSubscript      : 設置下標
setBold           : 設置粗體
setItalic         : 設置斜體
setBoldItalic     : 設置粗斜體
setFontFamily     : 設置字體
setAlign          : 設置對齊
setBitmap         : 設置圖片
setDrawable       : 設置圖片
setUri            : 設置圖片
setResourceId     : 設置圖片
setClickSpan      : 設置點擊事件
setUrl            : 設置超鏈接
setBlur           : 設置模糊
append            : 追加樣式字符串
create            : 創建樣式字符串
  • SP相關→SPUtils.java
SPUtils   : SPUtils構造函數
putString : SP中寫入String類型value
getString : SP中讀取String
putInt    : SP中寫入int類型value
getInt    : SP中讀取int
putLong   : SP中寫入long類型value
getLong   : SP中讀取long
putFloat  : SP中寫入float類型value
getFloat  : SP中讀取float
putBoolean: SP中寫入boolean類型value
getBoolean: SP中讀取boolean
getAll    : SP中獲取所有鍵值對
remove    : SP中移除該key
contains  : SP中是否存在該key
clear     : SP中清除所有數據
  • 字符串相關→StringUtils.java
isEmpty         : 判斷字符串是否為null或長度為0
isSpace         : 判斷字符串是否為null或全為空格
equals          : 判斷兩字符串是否相等
equalsIgnoreCase: 判斷兩字符串忽略大小寫是否相等
null2Length0    : null轉為長度為0的字符串
length          : 返回字符串長度
upperFirstLetter: 首字母大寫
lowerFirstLetter: 首字母小寫
reverse         : 反轉字符串
toDBC           : 轉化為半角字符
toSBC           : 轉化為全角字符
  • 線程池相關→ThreadPoolUtils.java
ThreadPoolUtils       : ThreadPoolUtils構造函數
execute               : 在未來某個時間執行給定的命令
execute               : 在未來某個時間執行給定的命令鏈表
shutDown              : 待以前提交的任務執行完畢后關閉線程池
shutDownNow           : 試圖停止所有正在執行的活動任務
isShutDown            : 判斷線程池是否已關閉
isTerminated          : 關閉線程池后判斷所有任務是否都已完成
awaitTermination      : 請求關閉、發生超時或者當前線程中斷
submit                : 提交一個Callable任務用于執行
submit                : 提交一個Runnable任務用于執行
invokeAll, invokeAny  : 執行給定的任務
schedule              : 延遲執行Runnable命令
schedule              : 延遲執行Callable命令
scheduleWithFixedRate : 延遲并循環執行命令
scheduleWithFixedDelay: 延遲并以固定休息時間循環執行命令
  • 時間相關→TimeUtils.java
millis2String           : 將時間戳轉為時間字符串
string2Millis           : 將時間字符串轉為時間戳
string2Date             : 將時間字符串轉為Date類型
date2String             : 將Date類型轉為時間字符串
date2Millis             : 將Date類型轉為時間戳
millis2Date             : 將時間戳轉為Date類型
getTimeSpan             : 獲取兩個時間差(單位:unit)
getFitTimeSpan          : 獲取合適型兩個時間差
getNowTimeMills         : 獲取當前毫秒時間戳
getNowTimeString        : 獲取當前時間字符串
getNowTimeDate          : 獲取當前Date
getTimeSpanByNow        : 獲取與當前時間的差(單位:unit)
getFitTimeSpanByNow     : 獲取合適型與當前時間的差
getFriendlyTimeSpanByNow: 獲取友好型與當前時間的差
isSameDay               : 判斷是否同一天
isLeapYear              : 判斷是否閏年
getWeek, getWeekIndex   : 獲取星期
getWeekOfMonth          : 獲取月份中的第幾周
getWeekOfYear           : 獲取年份中的第幾周
getChineseZodiac        : 獲取生肖
getZodiac               : 獲取星座
  • 吐司相關→ToastUtils.java
init              : 吐司初始化
showShortToastSafe: 安全地顯示短時吐司
showLongToastSafe : 安全地顯示長時吐司
showShortToast    : 顯示短時吐司
showLongToast     : 顯示長時吐司
cancelToast       : 取消吐司顯示
  • 壓縮相關→ZipUtils.java→Test
zipFiles          : 批量壓縮文件
zipFile           : 壓縮文件
unzipFiles        : 批量解壓文件
unzipFile         : 解壓文件
unzipFileByKeyword: 解壓帶有關鍵字的文件
getFilesPath      : 獲取壓縮文件中的文件路徑鏈表
getComments       : 獲取壓縮文件中的注釋鏈表
getEntries        : 獲取壓縮文件中的文件對象

1.判斷手機格式(正則表達式)

public static Boolean isPhone(String str) {
        String regex = "^1[3|4|5|7|8]\\d{9}$";
        return match(regex, str);
    }

    private static boolean match(String regex, String str) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

//代碼調用:

2.dp-px;px-dp

 /**
     * 根據手機的分辨率從 dp 的單位 轉成為 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }


    /**
     * 根據手機的分辨率從 px(像素) 的單位 轉成為 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
}
  1. 網絡判斷 2G - 3G - 4G -wifi
/**
 * Created by ziyang on 16/12/14.
 * Version 1.0
 */

public class NetWorkHelper {

    /**
     * 沒有網絡
     */
    public static final int NETWORKTYPE_INVALID = 0;
    /**
     * wap網絡
     */
    public static final int NETWORKTYPE_WAP = 1;
    /**
     * 2G網絡
     */
    public static final int NETWORKTYPE_2G = 2;
    /**
     * 3G和3G以上網絡,或統稱為快速網絡
     */
    public static final int NETWORKTYPE_3G = 3;
    /**
     * wifi網絡
     */
    public static final int NETWORKTYPE_WIFI = 4;

    private static boolean isFastMobileNetwork(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        switch (telephonyManager.getNetworkType()) {
            case TelephonyManager.NETWORK_TYPE_1xRTT:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return false; // ~ 14-64 kbps
            case TelephonyManager.NETWORK_TYPE_EDGE:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
                return true; // ~ 400-1000 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
                return true; // ~ 600-1400 kbps
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return false; // ~ 100 kbps
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return true; // ~ 2-14 Mbps
            case TelephonyManager.NETWORK_TYPE_HSPA:
                return true; // ~ 700-1700 kbps
            case TelephonyManager.NETWORK_TYPE_HSUPA:
                return true; // ~ 1-23 Mbps
            case TelephonyManager.NETWORK_TYPE_UMTS:
                return true; // ~ 400-7000 kbps
            case TelephonyManager.NETWORK_TYPE_EHRPD:
                return true; // ~ 1-2 Mbps
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
                return true; // ~ 5 Mbps
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return true; // ~ 10-20 Mbps
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return false; // ~25 kbps
            case TelephonyManager.NETWORK_TYPE_LTE:
                return true; // ~ 10+ Mbps
            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return false;
            default:
                return false;
        }
    }

    /**
     * 獲取網絡狀態,wifi,wap,2g,3g.
     *
     * @param context 上下文
     * @return int 網絡狀態 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G},
     * *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}*
     * <p>{@link #NETWORKTYPE_WIFI}
     */
    public static int getNetWorkType(Context context) {
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = manager.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            String type = networkInfo.getTypeName();
            if (type.equalsIgnoreCase("WIFI")) {
                return NETWORKTYPE_WIFI;
            } else if (type.equalsIgnoreCase("MOBILE")) {
                String proxyHost = android.net.Proxy.getDefaultHost();
                return TextUtils.isEmpty(proxyHost)
                        ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)
                        : NETWORKTYPE_WAP;
            }
        } else {
            return NETWORKTYPE_INVALID;
        }
        return NETWORKTYPE_INVALID;
    }

    public static boolean isNetWorkConn(Context context) {

        return getNetWorkType(context) != 0;
    }
}

4.LogUtils.java debug,release no log,當然可以添加更詳細的比如添加時間,msg等等

/**
 * LogUtils log工具類
 * @author ziyang
 */

public class LogUtils {

    public static boolean isDebug = BuildConfig.LOG_DEBUG;

    // 下面是傳入自定義tag的函數
    public static void i(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void d(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void e(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void v(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }
}

//在app build.gradle配置
 buildTypes {
        debug {
            buildConfigField "boolean", "LOG_DEBUG", "true"
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //signingConfig signingConfigs.debug
        }
        release {
            buildConfigField "boolean", "LOG_DEBUG", "false"
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

5.MyToast.java當然可以拓展,時間控制,content內容控制等等

public class MyToast extends Toast {
    private Toast mToast;

public MyToast(Context context) {
    super(context);
}

public void showToast(String text, Context mContext) {
    if (mToast == null) {
        mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT);
    } else {
        mToast.setText(text);
        mToast.setDuration(Toast.LENGTH_SHORT);
    }
    mToast.show();
}

public void cancelToast() {
    if (mToast != null) {
        mToast.cancel();
    }
}

}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容