Skip to content

Commit 3dbcb93

Browse files
committed
see log
1 parent f215bfb commit 3dbcb93

26 files changed

+1700
-455
lines changed

README.md

+115-25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Android开发人员不得不收集的代码(持续更新中)
2+
------
23
为方便查找,已进行大致归类,其目录如下所示:
3-
> - [App相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_app.md)[AppUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/AppUtils.java)
4+
> - [App相关][app.md][AppUtils.java][app.java]
45
> - 安装指定路径下的Apk *installApp*
56
> - 卸载指定包名的App *uninstallApp*
67
> - 获取当前App信息 *getAppInfo*
@@ -10,25 +11,31 @@
1011
> - 可用来做App信息分享 *shareAppInfo*
1112
> - 判断当前App处于前台还是后台 *isApplicationBackground*
1213
13-
> - [设备相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_device.md)[DeviceUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/DeviceUtils.java)
14+
> - [设备相关][device.md][DeviceUtils.java][device.java]
1415
> - 获取设备MAC地址 *getMacAddress*
1516
> - 获取设备厂商,如Xiaomi *getManufacturer*
1617
> - 获取设备型号,如MI2SC *getModel*
1718
> - 获取设备SD卡是否可用 *isSDCardEnable*
1819
> - 获取设备SD卡路径 *getSDCardPath*
1920
20-
> - [加解密相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_encrypt.md)[EncryptUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncryptUtils.java)
21+
> - [编码解码相关][encode.md][EncodeUtils.java][encode.java]
22+
> - 以UTF-8编码字符串 *encodeUTF8*
23+
> - 字符编码 *encode*
24+
> - 以UTF-8解码字符串 *decodeUTF8*
25+
> - 字符解码 *decode*
26+
27+
> - [加解密相关][encrypt.md][EncryptUtils.java][encrypt.java]
2128
> - MD5加密 *getMD5* *encryptMD5* *getMD5File*
2229
> - SHA加密 *getSHA* *encryptSHA*
2330
24-
> - [键盘相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_keyboard.md)[KeyboardUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/KeyboardUtils.java)
31+
> - [键盘相关][keyboard.md][KeyboardUtils.java][keyboard.java]
2532
> - 避免输入法面板遮挡
2633
> - 动态隐藏软键盘 *hideSoftInput*
2734
> - 点击屏幕空白区域隐藏软键盘(注释萌萌哒) *clickBlankArea2HideSoftInput0*
2835
> - 动态显示软键盘 *showSoftInput*
2936
> - 切换键盘显示与否状态 *toggleSoftInput*
3037
31-
> - [网络相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_network.md)[NetworkUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/NetworkUtils.java)
38+
> - [网络相关][network.md][NetworkUtils.java][network.java]
3239
> - 打开网络设置界面 *openWirelessSettings*
3340
> - 判断网络是否可用 *isAvailable*
3441
> - 判断网络是否连接 *isConnected*
@@ -38,7 +45,7 @@
3845
> - 获取移动终端类型 *getPhoneType*
3946
> - 获取当前的网络类型(WIFI,2G,3G,4G) *getNetWorkType* *getNetWorkTypeName*
4047
41-
> - [手机相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_phone.md)[PhoneUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/PhoneUtils.java)
48+
> - [手机相关][phone.md][PhoneUtils.java][phone.java]
4249
> - 判断设备是否是手机 *isPhone*
4350
> - 获取手机的IMIE *getDeviceIMEI*
4451
> - 获取手机状态信息 *getPhoneStatus*
@@ -49,28 +56,46 @@
4956
> - 打开手机联系人界面点击联系人后便获取该号码(注释萌萌哒) *getContantNum*
5057
> - 获取手机短信并保存到xml中 *getAllSMS*
5158
52-
> - [正则相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_regular.md)[RegularUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/RegularUtils.java)
59+
> - [正则相关][regular.md][RegularUtils.java][regular.java]
5360
> - 正则工具类
5461
55-
> - [屏幕相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_screen.md)[ScreenUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ScreenUtils.java)
62+
> - [屏幕相关][screen.md][ScreenUtils.java][screen.java]
5663
> - 获取手机分辨率 *getDeviceWidth**getDeviceHeight*
5764
> - 设置透明状态栏(api >= 19方可使用) *setTransparentStatusBar*
5865
> - 隐藏状态栏(注释萌萌哒) *hideStatusBar*
5966
> - 获取状态栏高度 *getStatusBarHeight*
6067
> - 判断状态栏是否存在 *isStatusBarExists*
6168
> - 获取ActionBar高度 *getActionBarHeight*
69+
> - 显示通知栏 *showNotificationBar*
70+
> - 隐藏通知栏 *hideNotificationBar*
6271
> - 设置屏幕为横屏(注释萌萌哒) *setLandscape*
6372
> - 获取屏幕截图 *snapShotWithStatusBar**snapShotWithoutStatusBar*
6473
> - 判断是否锁屏 *isScreenLock*
6574
66-
> - [尺寸相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_size.md)[SizeUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SizeUtils.java)
75+
> - [Shell相关][shell.md][ShellUtils.java][shell.java]
76+
> - 判断设备是否root *isRoot*
77+
> - 是否是在root下执行命令 *execCmd*
78+
79+
> - [尺寸相关][size.md][SizeUtils.java][size.java]
6780
> - dp与px转换 *dp2px**px2dp*
6881
> - sp与px转换 *sp2px**px2sp*
6982
> - 各种单位转换 *applyDimension*
7083
> - 在onCreate()即可强行获取View的尺寸 *forceGetViewSize*
7184
> - ListView中提前测量View尺寸(注释萌萌哒) *measureView*
7285
73-
> - [时间相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_time.md)[TimeUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/TimeUtils.java)
86+
> - [SP相关][sp.md][SPUtils.java][sp.java]
87+
> - SP中写入String类型value *putString*
88+
> - SP中读取String *getString*
89+
> - SP中写入int类型value *putInt*
90+
> - SP中读取int *getInt*
91+
> - SP中写入long类型value *putLong*
92+
> - SP中读取long *getLong*
93+
> - SP中写入float类型value *putFloat*
94+
> - SP中读取float *getFloat*
95+
> - SP中写入boolean类型value *putBoolean*
96+
> - SP中读取boolean *getBoolean*
97+
98+
> - [时间相关][time.md][TimeUtils.java][time.java]
7499
> - 将时间戳转为时间字符串 *milliseconds2String*
75100
> - 将时间字符串转为时间戳 *string2Milliseconds*
76101
> - 将时间字符串转为Date类型 *string2Date*
@@ -83,26 +108,91 @@
83108
> - 获取与当前时间的差(单位:unit) *getIntervalByNow*
84109
> - 判断闰年 *isLeapYear*
85110
86-
> - [未归类](https://github.com/Blankj/AndroidUtilCode/blob/master/unclassified.md)[UnclassifiedUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/UnclassifiedUtils.java)
111+
> - [未归类][unclassified.md][UnclassifiedUtils.java][unclassified.java]
87112
> - 获取服务是否开启 *isRunningService*
88-
> - [更新Log](https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md)
113+
> - [更新Log][update_log.md]
89114
90115
***
91116

92117
  **做这份整理只是想把它作为Android的一本小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走。希望它能逐日壮大起来,期待你的Star和完善,用途的话大家想把它们整理成工具类或者什么的话都可以,之后我也会封装工具类并分享之,但本篇只是提供查阅,毕竟看md比看类文件要爽多了,其中好多代码我也是各种搜刮来的,也要谢谢各位的总结,大部分代码已验证过可行,如有错误,请及时告之,开设QQ群提供讨论,群号:74721490**
118+
119+
## Download
120+
------
121+
Gradle:
122+
``` groovy
123+
compile 'com.blankj:utilcode:1.0'
124+
```
125+
126+
## Proguard
127+
------
128+
``` xml
129+
-keep class com.blankj.utilcode.** { *; }
130+
-keepclassmembers class com.blankj.utilcode.** { *; }
131+
-dontwarn com.blankj.utilcode.**
132+
```
133+
134+
## License
135+
------
136+
Copyright 2016 Blankj
137+
138+
Licensed under the Apache License, Version 2.0 (the "License");
139+
you may not use this file except in compliance with the License.
140+
You may obtain a copy of the License at
141+
142+
http://www.apache.org/licenses/LICENSE-2.0
143+
144+
Unless required by applicable law or agreed to in writing, software
145+
distributed under the License is distributed on an "AS IS" BASIS,
146+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
147+
See the License for the specific language governing permissions and
148+
limitations under the License.
149+
93150

94-
# 更新Log
95-
#### 2016/07/31 新增点击屏幕空白区域隐藏软键盘
96-
#### 2016/07/31 未能成功增加本页目录跳转功能(不支持)
97-
#### 2016/08/01 新增获取当前App版本Code
98-
#### 2016/08/01 新增目录中显示方法名
99-
#### 2016/08/01 新增获取SD卡路径,手机和设备进行分类,代码bug修改部分,小修排版,正在封装类
100-
#### 2016/08/02 wifi设置界面bug修复,注释排版还在修改,获取mac地址增加判空,新增QQ群:74721490,欢迎加入
101-
#### 2016/08/02 新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
102-
#### 2016/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)
103-
#### 2016/08/04 新增时间工具类(在此感谢yi520000给的补充),手机正则分简单和精确(在此感谢MIkeeJY),新增判断是否锁屏,注释分段落,目录按首字母排序
104-
#### 2016/08/05 加密新增MD5盐加密,完善NetworkUtils,新增判断状态栏是否存在(在此感谢tiandawu
105-
#### 2016/08/06 重命名包名,新增加密相关的单元测试,MD5加密新增文件加密重载。
151+
## 更新Log
152+
------
153+
#### 16/08/08 新增Shell工具类,已传jcenter()遇到好多坑,javaDoc惹的祸,注释一定要规范
154+
#### 16/08/07 新增6.0获取Mac地址方法,新增对HTML转义,新增编码解码工具类,新增SP工具类
155+
#### 16/08/06 重命名包名,新增加密相关的单元测试,MD5加密新增文件加密重载。
156+
#### 16/08/05 加密新增MD5盐加密,完善NetworkUtils,新增判断状态栏是否存在(在此感谢tiandawu)
157+
#### 16/08/04 新增时间工具类(在此感谢yi520000给的补充),手机正则分简单和精确(在此感谢MIkeeJY),新增判断是否锁屏,注释分段落,目录按首字母排序
158+
#### 16/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)
159+
#### 16/08/02 wifi设置界面bug修复,注释排版还在修改,获取mac地址增加判空,新增QQ群:74721490,欢迎加入新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
160+
#### 16/08/01 新增获取SD卡路径,手机和设备进行分类,代码bug修改部分,小修排版,正在封装类,新增目录中显示方法名,新增获取当前App版本Code
161+
#### 16/07/31 新增点击屏幕空白区域隐藏软键盘,未能成功增加本页目录跳转功能(不支持
162+
106163

107164

108-
##[关于Blankj](http://blankj.com/about)
165+
##[关于Blankj][blankj]
166+
167+
168+
[app.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_app.md
169+
[app.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/AppUtils.java
170+
[device.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_device.md
171+
[device.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/DeviceUtils.java
172+
[encode.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_encode.md
173+
[encode.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncodeUtils.java
174+
[encrypt.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_encrypt.md
175+
[encrypt.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncryptUtils.java
176+
[keyboard.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_keyboard.md
177+
[keyboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/KeyboardUtils.java
178+
[network.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_network.md
179+
[network.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/NetworkUtils.java
180+
[phone.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_phone.md
181+
[phone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/PhonekUtils.java
182+
[regular.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_regular.md
183+
[regular.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/RegularUtils.java
184+
[screen.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_screen.md
185+
[screen.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ScreenUtils.java
186+
[shell.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_shell.md
187+
[shell.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ShellUtils.java
188+
[size.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_size.md
189+
[size.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SizeUtils.java
190+
[sp.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_sp.md
191+
[sp.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SPUtils.java
192+
[time.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/about_time.md
193+
[time.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/TimeUtils.java
194+
[unclassified.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/unclassified.md
195+
[unclassified.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/UnclassifiedUtils.java
196+
[update_log.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md
197+
198+
[blankj]: http://blankj.com/about

about_app.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public static void shareAppInfo(Context context, String info) {
252252
``` java
253253
/**
254254
* 判断当前App处于前台还是后台
255-
* <p>需添加<uses-permission android:name="android.permission.GET_TASKS"/>
255+
* <p>需添加权限 android.permission.GET_TASKS
256256
* <p>并且必须是系统应用该方法才有效
257257
*/
258258
public static boolean isAppBackground(Context context) {

about_device.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
``` java
44
/**
55
* 获取设备MAC地址
6-
* <p>需添加权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
6+
* <p>需添加权限 android.permission.ACCESS_WIFI_STATE
77
*/
88
public static String getMacAddress(Context context) {
99
String macAddress;

about_encode.md

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# 加解密相关
2+
### MD5加密
3+
``` java
4+
/**
5+
* MD5加密
6+
*
7+
* @param data 明文字符串
8+
* @return 密文
9+
*/
10+
public static String getMD5(String data) {
11+
return getMD5(data.getBytes());
12+
}
13+
14+
/**
15+
* MD5加密
16+
*
17+
* @param data 明文字符串
18+
* @param salt 盐
19+
* @return 密文
20+
*/
21+
public static String getMD5(String data, String salt) {
22+
return bytes2Hex(encryptMD5((data + salt).getBytes()));
23+
}
24+
25+
/**
26+
* MD5加密
27+
*
28+
* @param data 明文字节数组
29+
* @return 密文
30+
*/
31+
public static String getMD5(byte[] data) {
32+
return bytes2Hex(encryptMD5(data));
33+
}
34+
35+
/**
36+
* MD5加密
37+
*
38+
* @param data 明文字节数组
39+
* @param salt 盐字节数组
40+
* @return 密文
41+
*/
42+
public static String getMD5(byte[] data, byte[] salt) {
43+
byte[] dataSalt = new byte[data.length + salt.length];
44+
System.arraycopy(data, 0, dataSalt, 0, data.length);
45+
System.arraycopy(salt, 0, dataSalt, data.length, salt.length);
46+
return bytes2Hex(encryptMD5(dataSalt));
47+
}
48+
49+
/**
50+
* MD5加密
51+
*
52+
* @param data 明文字节数组
53+
* @return 密文字节数组
54+
*/
55+
public static byte[] encryptMD5(byte[] data) {
56+
try {
57+
MessageDigest md = MessageDigest.getInstance("MD5");
58+
md.update(data);
59+
return md.digest();
60+
} catch (NoSuchAlgorithmException e) {
61+
e.printStackTrace();
62+
}
63+
return new byte[0];
64+
}
65+
66+
/**
67+
* 获取文件的MD5校验码
68+
*
69+
* @param filePath 文件路径
70+
* @return 文件的MD5校验码
71+
*/
72+
public static String getMD5File(String filePath) {
73+
FileInputStream in = null;
74+
try {
75+
MessageDigest md = MessageDigest.getInstance("MD5");
76+
in = new FileInputStream(filePath);
77+
int len;
78+
byte[] buffer = new byte[1024];
79+
while ((len = in.read(buffer)) != -1) {
80+
md.update(buffer, 0, len);
81+
}
82+
return bytes2Hex(md.digest());
83+
} catch (NoSuchAlgorithmException | IOException e) {
84+
e.printStackTrace();
85+
} finally {
86+
if (in != null) {
87+
try {
88+
in.close();
89+
} catch (IOException ignored) {
90+
}
91+
}
92+
}
93+
return "";
94+
}
95+
```
96+
97+
### SHA加密
98+
```
99+
/**
100+
* SHA加密
101+
*
102+
* @param data 明文字符串
103+
* @return 密文
104+
*/
105+
public static String getSHA(String data) {
106+
return getSHA(data.getBytes());
107+
}
108+
109+
/**
110+
* SHA加密
111+
*
112+
* @param data 明文字节数组
113+
* @return 密文
114+
*/
115+
public static String getSHA(byte[] data) {
116+
return bytes2Hex(encryptSHA(data));
117+
}
118+
119+
/**
120+
* SHA加密
121+
*
122+
* @param data 明文字节数组
123+
* @return 密文字节数组
124+
*/
125+
public static byte[] encryptSHA(byte[] data) {
126+
try {
127+
MessageDigest md = MessageDigest.getInstance("SHA");
128+
md.update(data);
129+
return md.digest();
130+
} catch (NoSuchAlgorithmException e) {
131+
e.printStackTrace();
132+
}
133+
return new byte[0];
134+
}
135+
136+
/**
137+
* 一个byte转为2个hex字符
138+
*/
139+
public static String bytes2Hex(byte[] src) {
140+
char[] res = new char[src.length * 2];
141+
final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
142+
for (int i = 0, j = 0; i < src.length; i++) {
143+
res[j++] = hexDigits[src[i] >>> 4 & 0x0f];
144+
res[j++] = hexDigits[src[i] & 0x0f];
145+
}
146+
return new String(res);
147+
}
148+
```

0 commit comments

Comments
 (0)