Skip to content

Commit 8aae762

Browse files
committed
modify md
1 parent 504be3d commit 8aae762

14 files changed

+2481
-1645
lines changed

md/about_app.md

+249-206
Large diffs are not rendered by default.

md/about_device.md

+94-56
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,106 @@
11
# 设备相关
2-
### 获取设备MAC地址
32
``` java
3+
import android.content.Context;
4+
import android.net.wifi.WifiInfo;
5+
import android.net.wifi.WifiManager;
6+
import android.os.Build;
7+
import android.os.Environment;
8+
9+
import java.io.File;
10+
import java.io.IOException;
11+
import java.io.InputStreamReader;
12+
import java.io.LineNumberReader;
13+
414
/**
5-
* 获取设备MAC地址
6-
* <p>需添加权限 android.permission.ACCESS_WIFI_STATE
15+
* <pre>
16+
* author: Blankj
17+
* blog : http://blankj.com
18+
* time : 2016/8/1
19+
* desc : 设备相关的工具类
20+
* </pre>
721
*/
8-
public static String getMacAddress(Context context) {
9-
String macAddress;
10-
WifiManager wifi = (WifiManager) context
11-
.getSystemService(Context.WIFI_SERVICE);
12-
WifiInfo info = wifi.getConnectionInfo();
13-
macAddress = info.getMacAddress();
14-
if (null == macAddress) {
15-
return "";
22+
public class DeviceUtils {
23+
24+
private DeviceUtils() {
25+
throw new UnsupportedOperationException("u can't fuck me...");
1626
}
17-
macAddress = macAddress.replace(":", "");
18-
return macAddress;
19-
}
20-
```
2127

22-
### 获取设备厂商,如Xiaomi
23-
``` java
24-
/**
25-
* 获取设备厂商,如Xiaomi
26-
*/
27-
public static String getManufacturer() {
28-
String MANUFACTURER = Build.MANUFACTURER;
29-
return MANUFACTURER;
30-
}
31-
```
28+
/**
29+
* 获取设备MAC地址
30+
* <p>需添加权限 android.permission.ACCESS_WIFI_STATE</p>
31+
*
32+
* @param context 上下文
33+
* @return MAC地址
34+
*/
35+
public static String getMacAddress(Context context) {
36+
WifiManager wifi = (WifiManager) context
37+
.getSystemService(Context.WIFI_SERVICE);
38+
WifiInfo info = wifi.getConnectionInfo();
39+
String macAddress = info.getMacAddress().replace(":", "");
40+
return macAddress == null ? "" : macAddress;
41+
}
3242

33-
### 获取设备型号,如MI2SC
34-
``` java
35-
/**
36-
* 获取设备型号,如MI2SC
37-
*/
38-
public static String getModel() {
39-
String model = Build.MODEL;
40-
if (model != null) {
41-
model = model.trim().replaceAll("\\s*", "");
42-
} else {
43-
model = "";
43+
/**
44+
* 获取设备MAC地址
45+
* <p>需添加权限 android.permission.ACCESS_WIFI_STATE</p>
46+
*
47+
* @return MAC地址
48+
*/
49+
public static String getMacAddress() {
50+
String macAddress = null;
51+
try {
52+
Process pp = Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address");
53+
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
54+
LineNumberReader reader = new LineNumberReader(ir);
55+
macAddress = reader.readLine().replace(":", "");
56+
} catch (IOException ex) {
57+
ex.printStackTrace();
58+
}
59+
return macAddress == null ? "" : macAddress;
4460
}
45-
return model;
46-
}
47-
```
4861

49-
### 获取设备SD卡是否可用
50-
``` java
51-
/**
52-
* 获取设备SD卡是否可用
53-
*/
54-
public static boolean isSDCardEnable() {
55-
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
56-
}
57-
```
62+
/**
63+
* 获取设备厂商,如Xiaomi
64+
*
65+
* @return 设备厂商
66+
*/
67+
public static String getManufacturer() {
68+
String MANUFACTURER = Build.MANUFACTURER;
69+
return MANUFACTURER;
70+
}
5871

59-
### 获取设备SD卡路径
60-
```
61-
/**
62-
* 获取设备SD卡路径
63-
* <p>一般是/storage/emulated/0/
64-
*/
65-
public static String getSDCardPath() {
66-
return Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;
72+
/**
73+
* 获取设备型号,如MI2SC
74+
*
75+
* @return 设备型号
76+
*/
77+
public static String getModel() {
78+
String model = Build.MODEL;
79+
if (model != null) {
80+
model = model.trim().replaceAll("\\s*", "");
81+
} else {
82+
model = "";
83+
}
84+
return model;
85+
}
86+
87+
/**
88+
* 获取设备SD卡是否可用
89+
*
90+
* @return true : 可用<br>false : 不可用
91+
*/
92+
public static boolean isSDCardEnable() {
93+
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
94+
}
95+
96+
/**
97+
* 获取设备SD卡路径
98+
* <p>一般是/storage/emulated/0/</p>
99+
*
100+
* @return SD卡路径
101+
*/
102+
public static String getSDCardPath() {
103+
return Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;
104+
}
67105
}
68106
```

md/about_encode.md

+59-132
Original file line numberDiff line numberDiff line change
@@ -1,148 +1,75 @@
1-
# 加解密相关
2-
### MD5加密
1+
# 编码解码相关
32
``` java
4-
/**
5-
* MD5加密
6-
*
7-
* @param data 明文字符串
8-
* @return 密文
9-
*/
10-
public static String getMD5(String data) {
11-
return getMD5(data.getBytes());
12-
}
3+
import java.io.UnsupportedEncodingException;
4+
import java.net.URLDecoder;
5+
import java.net.URLEncoder;
136

147
/**
15-
* MD5加密
16-
*
17-
* @param data 明文字符串
18-
* @param salt 盐
19-
* @return 密文
8+
* <pre>
9+
* author: Blankj
10+
* blog : http://blankj.com
11+
* time : 2016/8/7
12+
* desc : 编码解码相关工具类
13+
* </pre>
2014
*/
21-
public static String getMD5(String data, String salt) {
22-
return bytes2Hex(encryptMD5((data + salt).getBytes()));
23-
}
15+
public class EncodeUtils {
2416

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-
}
17+
private EncodeUtils() {
18+
throw new UnsupportedOperationException("u can't fuck me...");
19+
}
4820

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();
21+
/**
22+
* 以UTF-8编码字符串
23+
* <p>若想自己指定字符集,可以使用encode(String string, String charset)方法</p>
24+
*
25+
* @param string 要编码的字符
26+
* @return 编码为UTF-8的字符串
27+
*/
28+
public static String encodeUTF8(String string) {
29+
return encode(string, "UTF-8");
6230
}
63-
return new byte[0];
64-
}
6531

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-
}
32+
/**
33+
* 字符编码
34+
* <p>若系统不支持指定的编码字符集,则直接将string原样返回</p>
35+
*
36+
* @param string 要编码的字符
37+
* @param charset 字符集
38+
* @return 编码为字符集的字符串
39+
*/
40+
public static String encode(String string, String charset) {
41+
try {
42+
return URLEncoder.encode(string, charset);
43+
} catch (UnsupportedEncodingException e) {
44+
return string;
9145
}
9246
}
93-
return "";
94-
}
95-
```
9647

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();
48+
/**
49+
* 以UTF-8解码字符串
50+
* <p>若想自己指定字符集,可以使用# {decode(String string, String charset)}方法</p>
51+
*
52+
* @param string 要解码的字符
53+
* @return 解码为UTF-8的字符串
54+
*/
55+
public static String decodeUTF8(String string) {
56+
return decode(string, "UTF-8");
13257
}
133-
return new byte[0];
134-
}
13558

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];
59+
/**
60+
* 字符解码
61+
* <p>若系统不支持指定的解码字符集,则直接将string原样返回</p>
62+
*
63+
* @param string 要解码的字符
64+
* @param charset 字符集
65+
* @return 解码为字符集的字符串
66+
*/
67+
public static String decode(String string, String charset) {
68+
try {
69+
return URLDecoder.decode(string, charset);
70+
} catch (UnsupportedEncodingException e) {
71+
return string;
72+
}
14573
}
146-
return new String(res);
14774
}
14875
```

0 commit comments

Comments
 (0)