Android 常用的工具類集

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咕晋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市收奔,隨后出現(xiàn)的幾起案子掌呜,更是在濱河造成了極大的恐慌,老刑警劉巖坪哄,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件质蕉,死亡現(xiàn)場離奇詭異,居然都是意外死亡翩肌,警方通過查閱死者的電腦和手機(jī)模暗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來念祭,“玉大人兑宇,你說我怎么就攤上這事×焕ぃ” “怎么了隶糕?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長站玄。 經(jīng)常有香客問我枚驻,道長,這世上最難降的妖魔是什么株旷? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任再登,我火速辦了婚禮,結(jié)果婚禮上晾剖,老公的妹妹穿的比我還像新娘锉矢。我一直安慰自己,他們只是感情好钞瀑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布沈撞。 她就那樣靜靜地躺著,像睡著了一般雕什。 火紅的嫁衣襯著肌膚如雪缠俺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天贷岸,我揣著相機(jī)與錄音壹士,去河邊找鬼。 笑死偿警,一個胖子當(dāng)著我的面吹牛躏救,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盒使,長吁一口氣:“原來是場噩夢啊……” “哼崩掘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起少办,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤苞慢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后英妓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挽放,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年蔓纠,在試婚紗的時候發(fā)現(xiàn)自己被綠了辑畦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡腿倚,死狀恐怖纯出,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敷燎,我是刑警寧澤潦刃,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站懈叹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏分扎。R本人自食惡果不足惜澄成,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畏吓。 院中可真熱鬧墨状,春花似錦、人聲如沸菲饼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏悦。三九已至镐确,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饼煞,已是汗流浹背源葫。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砖瞧,地道東北人息堂。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荣堰。 傳聞我的和親對象是個殘疾皇子床未,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,091評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)振坚,斷路器薇搁,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法屡拨,內(nèi)部類的語法只酥,繼承相關(guān)的語法,異常的語法呀狼,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • 由于平時速凍餃子吃多了的緣故裂允,我很擅長煮餃子。無論逢年過節(jié)的家庭聚餐哥艇,還是平日的朋友拜訪绝编,我總會那么露一手环凿。得到他...
    庚翼閱讀 435評論 1 2
  • 昨天和采購內(nèi)訓(xùn)談判課程逗堵,其中有兩個名詞解釋是我們必須了解的。 1眷昆、囚徒困境 來源:博弈論模型 提出者梅里爾·弗勒德...
    碧云小講小讀閱讀 460評論 0 1