Android 常用的工具類集
項(xiàng)目中一般會用到很多通用的工具方法,想了想做下總結(jié)侵蒙,分享一下纯赎,后續(xù)會慢慢補(bǔ)充,希望對各位有用(大佬繞過……)
判斷橫豎屏的方法
public boolean isScreenChange(Context context) {
Configuration mConfiguration = context.getResources().getConfiguration(); // 獲取設(shè)置的配置信息
int ori = mConfiguration.orientation; // 獲取屏幕方向
if (ori == mConfiguration.ORIENTATION_LANDSCAPE) {
// 橫屏
return true;
} else if (ori == mConfiguration.ORIENTATION_PORTRAIT) {
// 豎屏
return false;
}
return false;
}
開啟后臺Service
public static void StartService(Context mContext) {
// Log.e(TAG, "Service----" +
// String.valueOf(isServiceRunning(mContext)));
if (CommonUtil.isServiceRunning(mContext))
return;
if (null == serviceIntent) {
// 開啟后臺服務(wù)励稳,檢測各數(shù)據(jù)
serviceIntent = new Intent(mContext, CrfService.class);
mContext.startService(serviceIntent);
}
}
判斷后臺服務(wù)是否正在通信中
public static boolean isServiceRunning(Context mContext) {
boolean isRunning = false;
String className = serviceAction;
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(100);
if (serviceList.size() <= 0)
return false;
for (int i = 0; i < serviceList.size(); i++) {
String name = serviceList.get(i).service.getClassName();
if (serviceList.get(i).service.getClassName().equals(className)) {
isRunning = true;
break;
}
}
return isRunning;
}
停止后臺service服務(wù)
public static void StopService(Context mContext) {
if (CommonUtil.isServiceRunning(mContext)) {
if (null != serviceIntent) {// 關(guān)閉舊通信服務(wù)
mContext.stopService(serviceIntent);
serviceIntent = null;
} else {// activity退出后佃乘,再停止的情況
final Intent intent = new Intent();
intent.setAction(serviceAction);
mContext.stopService(intent);
}
}
}
檢查是否有網(wǎng)絡(luò)
public static boolean isNetworkAvailable(Context context) {
NetworkInfo info = getNetworkInfo(context);
if (info != null) {
return info.isAvailable();
}
return false;
}
檢查是否是WIFI
public static boolean isWifi(Context context) {
NetworkInfo info = getNetworkInfo(context);
if (info != null) {
if (info.getType() == ConnectivityManager.TYPE_WIFI)
return true;
}
return false;
}
檢查是否是移動網(wǎng)絡(luò)
public static boolean isMobile(Context context) {
NetworkInfo info = getNetworkInfo(context);
if (info != null) {
if (info.getType() == ConnectivityManager.TYPE_MOBILE)
return true;
}
return false;
}
檢查SD卡是否存在
public static boolean checkSdCard() {
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
return true;
else
return false;
}
判斷sim卡是否存在
public static boolean isHasSIM() {
int absent = TelephonyManager.SIM_STATE_ABSENT;
if (1 == absent) {
return false;// 無SIM卡或者不可用
} else
return true;
}
判斷當(dāng)前build版本是否為Android M
public static boolean isSupportBuildVersion() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return true;
}
return false;
}
身份證校驗(yàn)工具類IdNoUtils
IdNoUtils工具類,主要包括 校驗(yàn)身份證合法性校驗(yàn)驹尼,下面的工具類可以直接使用IdNoUtils.java
異常捕捉工具類CrashHandlerUtils
CrashHandlerUtils工具類趣避,主要包括 當(dāng)程序發(fā)生Uncaught異常的時候,有該類來接管程序,并記錄發(fā)送錯誤報告.需要在Application中注冊,為了要在程序啟動器就監(jiān)控整個程序新翎。CrashHandlerUtils.java
金額單位轉(zhuǎn)換AmountUtils
AmountUtils工具類程帕,主要包括 分轉(zhuǎn)元住练、元轉(zhuǎn)分金額,主要解決高精度計(jì)算出現(xiàn)誤差的問題骆捧;相關(guān)知識點(diǎn):BigDecimal 由任意精度的整數(shù)非標(biāo)度值 和32 位的整數(shù)標(biāo)度 (scale) 組成澎羞。如果為零或正數(shù),則標(biāo)度是小數(shù)點(diǎn)后的位數(shù)敛苇。如果為負(fù)數(shù),則將該數(shù)的非標(biāo)度值乘以 10 的負(fù)scale 次冪顺呕。因此枫攀,BigDecimal表示的數(shù)值是(unscaledValue × 10-scale);參考AmountUtils.demo
HttpUtils
Http網(wǎng)絡(luò)工具類株茶,主要包括httpGet来涨、httpPost以及http參數(shù)相關(guān)方法,以httpGet為例:
static HttpResponse httpGet(HttpRequest request)
static HttpResponse httpGet(java.lang.String httpUrl)
static String httpGetString(String httpUrl)
包含以上三個方法启盛,默認(rèn)使用gzip壓縮蹦掐,使用bufferedReader提高讀取速度。
HttpRequest中可以設(shè)置url僵闯、timeout卧抗、userAgent等其他http參數(shù)
HttpResponse中可以獲取返回內(nèi)容、http響應(yīng)碼鳖粟、http過期時間(Cache-Control的max-age和expires)等
前兩個方法可以進(jìn)行高級參數(shù)設(shè)置及豐富內(nèi)容返回社裆,第三個方法可以簡單的傳入url獲取返回內(nèi)容,httpPost類似向图。更詳細(xì)的設(shè)置可以直接使用HttpURLConnection或apache的HttpClient泳秀。
源碼可見HttpUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見HttpUtils Api Guide榄攀。
DownloadManagerPro
android系統(tǒng)下載管理DownloadManager增強(qiáng)方法嗜傅,可用于包括獲取下載相關(guān)信息,如:
getStatusById(long) 得到下載狀態(tài)
getDownloadBytes(long) 得到下載進(jìn)度信息
getBytesAndStatus(long) 得到下載進(jìn)度信息和狀態(tài)
getFileName(long) 得到下載文件路徑
getUri(long) 得到下載uri
getReason(long) 得到下載失敗或暫停原因
getPausedReason(long) 得到下載暫停原因
getErrorCode(long) 得到下載錯誤碼
源碼可見DownloadManagerPro.java檩赢,更多方法及更詳細(xì)參數(shù)介紹可見DownloadManagerPro Api Guide吕嘀。關(guān)于Android DownManager使用可見DownManager Demo。
ShellUtils
Android Shell工具類漠畜,可用于檢查系統(tǒng)root權(quán)限币他,并在shell或root用戶下執(zhí)行shell命令。如:
checkRootPermission() 檢查root權(quán)限
execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg) shell環(huán)境執(zhí)行命令憔狞,第二個參數(shù)表示是否root權(quán)限執(zhí)行
execCommand(String command, boolean isRoot) shell環(huán)境執(zhí)行命令
源碼可見ShellUtils.java蝴悉,更多方法及更詳細(xì)參數(shù)介紹可見ShellUtils Api Guide。關(guān)于靜默安裝可見apk-root權(quán)限靜默安裝瘾敢。
PackageUtils
Android包相關(guān)工具類拍冠,可用于(root)安裝應(yīng)用尿这、(root)卸載應(yīng)用、判斷是否系統(tǒng)應(yīng)用等庆杜,如:
install(Context, String) 安裝應(yīng)用射众,如果是系統(tǒng)應(yīng)用或已經(jīng)root,則靜默安裝晃财,否則一般安裝
uninstall(Context, String) 卸載應(yīng)用叨橱,如果是系統(tǒng)應(yīng)用或已經(jīng)root,則靜默卸載断盛,否則一般卸載
isSystemApplication(Context, String) 判斷應(yīng)用是否為系統(tǒng)應(yīng)用
源碼可見PackageUtils.java罗洗,更多方法及更詳細(xì)參數(shù)介紹可見ShellUtils Api Guide。關(guān)于靜默安裝可見apk-root權(quán)限靜默安裝钢猛。
PreferencesUtils
Android SharedPreferences相關(guān)工具類伙菜,可用于方便的向SharedPreferences中讀取和寫入相關(guān)類型數(shù)據(jù),如:
putString(Context, String, String) 保存string類型數(shù)據(jù)
putInt(Context, String, int) 保存int類型數(shù)據(jù)
getString(Context, String) 獲取string類型數(shù)據(jù)
getInt(Context, String) 獲取int類型數(shù)據(jù)
可通過修改PREFERENCE_NAME變量修改preference name
源碼可見PreferencesUtils.java命迈,更多方法及更詳細(xì)參數(shù)介紹可見PreferencesUtils Api Guide贩绕。
JSONUtils
JSONUtils工具類,可用于方便的向Json中讀取和寫入相關(guān)類型數(shù)據(jù)壶愤,如:
String getString(JSONObject jsonObject, String key, String defaultValue) 得到string類型value
String getString(String jsonData, String key, String defaultValue) 得到string類型value
表示從json中讀取某個String類型key的值
getMap(JSONObject jsonObject, String key) 得到map
getMap(String jsonData, String key) 得到map
表示從json中讀取某個Map類型key的值
源碼可見JSONUtils.java淑倾,更多方法及更詳細(xì)參數(shù)介紹可見JSONUtils Api Guide。
FileUtils
文件工具類公你,可用于讀寫文件及對文件進(jìn)行操作踊淳。如:
readFile(String filePath) 讀文件
writeFile(String filePath, String content, boolean append) 寫文件
getFileSize(String path) 得到文件大小
deleteFile(String path) 刪除文件
源碼可見FileUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見FileUtils Api Guide陕靠。
ResourceUtils
Android Resource工具類迂尝,可用于從android資源目錄的raw和assets目錄讀取內(nèi)容,如:
geFileFromAssets(Context context, String fileName) 得到assets目錄下某個文件內(nèi)容
geFileFromRaw(Context context, int resId) 得到raw目錄下某個文件內(nèi)容
源碼可見ResourceUtils.java剪芥,更多方法及更詳細(xì)參數(shù)介紹可見ResourceUtils Api Guide垄开。
StringUtils
String工具類,可用于常見字符串操作税肪,如:
isEmpty(String str) 判斷字符串是否為空或長度為0
isBlank(String str) 判斷字符串是否為空或長度為0 或由空格組成
utf8Encode(String str) 以utf-8格式編碼
capitalizeFirstLetter(String str) 首字母大寫
源碼可見StringUtils.java溉躲,更多方法及更詳細(xì)參數(shù)介紹可見StringUtils Api Guide。
ParcelUtils
Android Parcel工具類益兄,可用于從parcel讀取或?qū)懭胩厥忸愋蛿?shù)據(jù)锻梳,如:
readBoolean(Parcel in) 從pacel中讀取boolean類型數(shù)據(jù)
readHashMap(Parcel in, ClassLoader loader) 從pacel中讀取map類型數(shù)據(jù)
writeBoolean(boolean b, Parcel out) 向parcel中寫入boolean類型數(shù)據(jù)
writeHashMap(Map<K, V> map, Parcel out, int flags) 向parcel中寫入map類型數(shù)據(jù)
源碼可見ParcelUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ParcelUtils Api Guide净捅。
RandomUtils
隨機(jī)數(shù)工具類疑枯,可用于獲取固定大小固定字符內(nèi)的隨機(jī)數(shù),如:
getRandom(char[] sourceChar, int length) 生成隨機(jī)字符串蛔六,所有字符均在某個字符串內(nèi)
getRandomNumbers(int length) 生成隨機(jī)數(shù)字
源碼可見RandomUtils.java荆永,更多方法及更詳細(xì)參數(shù)介紹可見RandomUtils Api Guide废亭。
ArrayUtils
數(shù)組工具類,可用于數(shù)組常用操作具钥,如:
isEmpty(V[] sourceArray) 判斷數(shù)組是否為空或長度為0
getLast(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數(shù)組中某個元素前一個元素豆村,isCircle表示是否循環(huán)
getNext(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數(shù)組中某個元素下一個元素,isCircle表示是否循環(huán)
源碼可見ArrayUtils.java骂删,更多方法及更詳細(xì)參數(shù)介紹可見ArrayUtils Api Guide掌动。
ImageUtils
圖片工具類,可用于Bitmap, byte array, Drawable之間進(jìn)行轉(zhuǎn)換以及圖片縮放桃漾,目前功能薄弱坏匪,后面會進(jìn)行增強(qiáng)。如:
bitmapToDrawable(Bitmap b) bimap轉(zhuǎn)換為drawable
drawableToBitmap(Drawable d) drawable轉(zhuǎn)換為bitmap
drawableToByte(Drawable d) drawable轉(zhuǎn)換為byte
scaleImage(Bitmap org, float scaleWidth, float scaleHeight) 縮放圖片
源碼可見ImageUtils.java撬统,更多方法及更詳細(xì)參數(shù)介紹可見ImageUtils Api Guide。
ListUtils
List工具類敦迄,可用于List常用操作恋追,如:
isEmpty(List<V> sourceList) 判斷List是否為空或長度為0
join(List<String> list, String separator) List轉(zhuǎn)換為字符串,并以固定分隔符分割
addDistinctEntry(List<V> sourceList, V entry) 向list中添加不重復(fù)元素
源碼可見ListUtils.java罚屋,更多方法及更詳細(xì)參數(shù)介紹可見ListUtils Api Guide苦囱。
MapUtils
Map工具類,可用于Map常用操作脾猛,如:
isEmpty(Map<K, V> sourceMap) 判斷map是否為空或長度為0
parseKeyAndValueToMap(String source, String keyAndValueSeparator, String keyAndValuePairSeparator, boolean ignoreSpace) 字符串解析為map
toJson(Map<String, String> map) map轉(zhuǎn)換為json格式
源碼可見MapUtils.java撕彤,更多方法及更詳細(xì)參數(shù)介紹可見MapUtils Api Guide。
ObjectUtils
Object工具類猛拴,可用于Object常用操作羹铅,如:
isEquals(Object actual, Object expected) 比較兩個對象是否相等
compare(V v1, V v2) 比較兩個對象大小
transformIntArray(int[] source) Integer 數(shù)組轉(zhuǎn)換為int數(shù)組
源碼可見ObjectUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ObjectUtils Api Guide愉昆。
SerializeUtils
序列化工具類职员,可用于序列化對象到文件或從文件反序列化對象,如:
deserialization(String filePath) 從文件反序列化對象
serialization(String filePath, Object obj) 序列化對象到文件
源碼可見SerializeUtils.java跛溉,更多方法及更詳細(xì)參數(shù)介紹可見SerializeUtils Api Guide焊切。
SystemUtils
系統(tǒng)信息工具類,可用于得到線程池合適的大小芳室,目前功能薄弱专肪,后面會進(jìn)行增強(qiáng)。如:
getDefaultThreadPoolSize() 得到跟系統(tǒng)配置相符的線程池大小
源碼可見SystemUtils.java堪侯,更多方法及更詳細(xì)參數(shù)介紹可見SystemUtils Api Guide嚎尤。
TimeUtils
時間工具類,可用于時間相關(guān)操作抖格,如:
getCurrentTimeInLong() 得到當(dāng)前時間
getTime(long timeInMillis, SimpleDateFormat dateFormat) 將long轉(zhuǎn)換為固定格式時間字符串
源碼可見TimeUtils.java诺苹,更多方法及更詳細(xì)參數(shù)介紹可見TimeUtils Api Guide咕晋。