Skip to content

Commit 36dcb2d

Browse files
committed
新增时间工具类(在此感谢yi520000给的补充),手机正则分简单和精确(在此感谢MIkeeJY),新增判断是否锁屏,注释使用<p>分段落,目录按首字母排序
1 parent 9b1d9b3 commit 36dcb2d

20 files changed

+980
-207
lines changed

README.md

+64-38
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
# Android开发人员不得不收集的代码(不断更新)
22
为方便查找,已进行大致归类,其目录如下所示:
3-
> - [尺寸相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_size.md)[SizeUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/SizeUtils.java)
4-
> - dp与px转换 *dp2px**px2dp*
5-
> - sp与px转换 *sp2px**px2sp*
6-
> - 各种单位转换 *applyDimension*
7-
> - 在onCreate()即可强行获取View的尺寸 *forceGetViewSize*
8-
> - ListView中提前测量View尺寸(注释萌萌哒) *measureView*
3+
> - [App相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_app.md)[AppUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/AppUtils.java)
4+
> - 安装指定路径下的Apk *installApp*
5+
> - 卸载指定包名的App *uninstallApp*
6+
> - 获取当前App信息 *getAppInfo*
7+
> - 获取所有已安装App信息 *getAllAppsInfo*
8+
> - 打开指定包名的App *openAppByPackageName*
9+
> - 打开指定包名的App应用信息界面 *openAppInfo*
10+
> - 可用来做App信息分享 *shareAppInfo*
11+
> - 判断当前App处于前台还是后台 *isApplicationBackground*
12+
913
> - [设备相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_device.md)[DeviceUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/DeviceUtils.java)
1014
> - 获取设备MAC地址 *getMacAddress*
1115
> - 获取设备厂商,如Xiaomi *getManufacturer*
1216
> - 获取设备型号,如MI2SC *getModel*
1317
> - 获取设备SD卡是否可用 *isSDCardEnable*
1418
> - 获取设备SD卡路径 *getSDCardPath*
15-
> - [手机相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_phone.md)[PhoneUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/PhoneUtils.java)
16-
> - 判断设备是否是手机 *isPhone*
17-
> - 获取手机的IMIE *getDeviceIMEI*
18-
> - 获取手机状态信息 *getPhoneStatus*
19-
> - 拨打电话 *callDial*
20-
> - 发送短信 *sendSms*
21-
> - 获取手机联系人 *getAllContactInfo*
22-
> - 打开手机联系人界面点击联系人后便获取该号码(注释萌萌哒) *getContantNum*
23-
> - 获取手机短信并保存到xml中 *getAllSMS*
19+
20+
> - [加解密相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_encrypt.md)[EncryptUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/EncryptUtils.java)
21+
> - MD5加密 *getMD5* *encryptMD5* *getMD5File*
22+
> - SHA加密 *getSHA* *encryptSHA*
23+
24+
> - [键盘相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_keyboard.md)[KeyboardUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/KeyboardUtils.java)
25+
> - 避免输入法面板遮挡
26+
> - 动态隐藏软键盘 *hideSoftInput*
27+
> - 点击屏幕空白区域隐藏软键盘(注释萌萌哒) *clickBlankArea2HideSoftInput0*
28+
> - 动态显示软键盘 *showSoftInput*
29+
> - 切换键盘显示与否状态 *toggleSoftInput*
30+
2431
> - [网络相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_network.md)[NetworkUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/NetworkUtils.java)
2532
> - 打开网络设置界面 *openWirelessSettings*
2633
> - 判断是否网络连接 *isConnected*
@@ -29,40 +36,58 @@
2936
> - 获取移动终端类型 *getPhoneType*
3037
> - 获取连接的网络类型(2G,3G,4G) *getCurNetworkType*
3138
> - 获取当前手机的网络类型(WIFI,2G,3G,4G) *getNetWorkStatus*
32-
> - [App相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_app.md)[AppUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/AppUtils.java)
33-
> - 安装指定路径下的Apk *installApk*
34-
> - 卸载指定包名的App *uninstallApp*
35-
> - 获取当前App信息 *getAppInfo*
36-
> - 获取所有已安装App信息 *getAllAppsInfo*
37-
> - 打开指定包名的App *openAppByPackageName*
38-
> - 打开指定包名的App应用信息界面 *openAppInfo*
39-
> - 可用来做App信息分享 *shareAppInfo*
40-
> - 判断当前App处于前台还是后台 *isApplicationBackground*
39+
40+
> - [手机相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_phone.md)[PhoneUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/PhoneUtils.java)
41+
> - 判断设备是否是手机 *isPhone*
42+
> - 获取手机的IMIE *getDeviceIMEI*
43+
> - 获取手机状态信息 *getPhoneStatus*
44+
> - 跳至填充好phoneNumber的拨号界面 *dial*
45+
> - 拨打phoneNumber *call*
46+
> - 发送短信 *sendSms*
47+
> - 获取手机联系人 *getAllContactInfo*
48+
> - 打开手机联系人界面点击联系人后便获取该号码(注释萌萌哒) *getContantNum*
49+
> - 获取手机短信并保存到xml中 *getAllSMS*
50+
51+
> - [正则相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_regular.md)[RegularUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/RegularUtils.java)
52+
> - 正则工具类
53+
4154
> - [屏幕相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_screen.md)[ScreenUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/ScreenUtils.java)
4255
> - 获取手机分辨率 *getDeviceWidth**getDeviceHeight*
4356
> - 设置透明状态栏(api >= 19方可使用) *setTransparentStatusBar*
4457
> - 隐藏状态栏(注释萌萌哒) *hideStatusBar*
4558
> - 获取状态栏高度 *getStatusBarHeight*
46-
> - 获取状态栏高度+标题栏(ActionBar)高度 *getTopBarHeight*
59+
> - 获取ActionBar高度 *getActionBarHeight*
4760
> - 设置屏幕为横屏(注释萌萌哒) *setLandscape*
4861
> - 获取屏幕截图 *snapShotWithStatusBar**snapShotWithoutStatusBar*
49-
> - [键盘相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_keyboard.md)[KeyboardUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/KeyboardUtils.java)
50-
> - 避免输入法面板遮挡
51-
> - 动态隐藏软键盘 *hideSoftInput*
52-
> - 点击屏幕空白区域隐藏软键盘(注释萌萌哒) *clickBlankArea2HideSoftInput0*
53-
> - 动态显示软键盘 *showSoftInput*
54-
> - 切换键盘显示与否状态 *toggleSoftInput*
55-
> - [正则相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_regular.md)[RegularUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/RegularUtils.java)
56-
> - 正则工具类
57-
> - [加解密相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_encrypt.md)[EncryptUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/EncryptUtils.java)
58-
> - MD5加密 *encryptMD5*
59-
> - SHA加密 *encryptSHA*
62+
> - 判断是否锁屏 *isScreenLock*
63+
64+
> - [尺寸相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_size.md)[SizeUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/SizeUtils.java)
65+
> - dp与px转换 *dp2px**px2dp*
66+
> - sp与px转换 *sp2px**px2sp*
67+
> - 各种单位转换 *applyDimension*
68+
> - 在onCreate()即可强行获取View的尺寸 *forceGetViewSize*
69+
> - ListView中提前测量View尺寸(注释萌萌哒) *measureView*
70+
71+
> - [时间相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_time.md)[TimeUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/TimeUtils.java)
72+
> - 将时间戳转为时间字符串 *milliseconds2String*
73+
> - 将时间字符串转为时间戳 *string2Milliseconds*
74+
> - 将时间字符串转为Date类型 *string2Date*
75+
> - 将Date类型转为时间字符串 *date2String*
76+
> - 将Date类型转为时间戳 *date2Milliseconds*
77+
> - 将时间戳转为Date类型 *milliseconds2Date*
78+
> - 毫秒时间戳单位转换(单位:unit) *milliseconds2Unit*
79+
> - 获取两个时间差(单位:unit) *getIntervalTime*
80+
> - 获取当前时间 *getCurTimeMills* *getCurTimeString* *getCurTimeDate*
81+
> - 获取与当前时间的差(单位:unit) *getIntervalByNow*
82+
> - 判断闰年 *isLeapYear*
83+
6084
> - [未归类](https://github.com/Blankj/AndroidUtilCode/blob/master/unclassified.md)[UnclassifiedUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/UnclassifiedUtils.java)
6185
> - 获取服务是否开启 *isRunningService*
62-
> - [更新Log](https://github.com/Blankj/AndroidUtilCode/blob/master/about_log.md)
86+
> - [更新Log](https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md)
6387
88+
***
6489

65-
**做这份整理只是想把它作为Android的一本小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走。希望它能逐日壮大起来,期待你的Star和完善,用途的话大家想把它们整理成工具类或者什么的话都可以,之后我也会封装工具类并分享之,但本篇只是提供查阅,毕竟看md比看类文件要爽多了,其中好多代码我也是各种搜刮来的,也要谢谢各位的总结,大部分代码已验证过可行,如有错误,请及时告之,开设QQ群提供讨论,群号:74721490**
90+
  **做这份整理只是想把它作为Android的一本小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走。希望它能逐日壮大起来,期待你的Star和完善,用途的话大家想把它们整理成工具类或者什么的话都可以,之后我也会封装工具类并分享之,但本篇只是提供查阅,毕竟看md比看类文件要爽多了,其中好多代码我也是各种搜刮来的,也要谢谢各位的总结,大部分代码已验证过可行,如有错误,请及时告之,开设QQ群提供讨论,群号:74721490**
6691

6792
# 更新Log
6893
#### 2016/07/31 新增点击屏幕空白区域隐藏软键盘
@@ -73,6 +98,7 @@
7398
#### 2016/08/02 wifi设置界面bug修复,注释排版还在修改,获取mac地址增加判空,新增QQ群:74721490,欢迎加入
7499
#### 2016/08/02 新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
75100
#### 2016/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)
101+
#### 2016/08/04 新增时间工具类(在此感谢yi520000给的补充),手机正则分简单和精确(在此感谢MIkeeJY),新增判断是否锁屏,注释使用<p>分段落,目录按首字母排序
76102

77103

78104
##[关于Blankj](http://blankj.com/about)

about_app.md

+24-12
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
``` java
44
/**
55
* 安装指定路径下的Apk
6-
* 根据路径名是否符合和文件是否存在判断是否安装成功
7-
* 更好的做法应该是startActivityForResult回调判断是否安装成功比较妥当
8-
* 这里做不了回调,后续自己做处理
6+
* <p>根据路径名是否符合和文件是否存在判断是否安装成功
7+
* <p>更好的做法应该是startActivityForResult回调判断是否安装成功比较妥当
8+
* <p>这里做不了回调,后续自己做处理
99
*/
1010
public static boolean installApp(Context context, String filePath) {
1111
if (filePath != null && filePath.length() > 4
@@ -27,9 +27,9 @@ public static boolean installApp(Context context, String filePath) {
2727
``` java
2828
/**
2929
* 卸载指定包名的App
30-
* 这里卸载成不成功只判断了packageName是否为空
31-
* 如果要根据是否卸载成功应该用startActivityForResult回调判断是否还存在比较妥当
32-
* 这里做不了回调,后续自己做处理
30+
* <p>这里卸载成不成功只判断了packageName是否为空
31+
* <p>如果要根据是否卸载成功应该用startActivityForResult回调判断是否还存在比较妥当
32+
* <p>这里做不了回调,后续自己做处理
3333
*/
3434
public boolean uninstallApp(Context context, String packageName) {
3535
if (!TextUtils.isEmpty(packageName)) {
@@ -133,10 +133,22 @@ public static class AppInfo {
133133
this.setSD(isSD);
134134
this.setUser(isUser);
135135
}
136+
137+
/*@Override
138+
public String toString() {
139+
return getName() + "\n"
140+
+ getIcon() + "\n"
141+
+ getPackagName() + "\n"
142+
+ getVersionName() + "\n"
143+
+ getVersionCode() + "\n"
144+
+ isSD() + "\n"
145+
+ isUser() + "\n";
146+
}*/
136147
}
148+
137149
/**
138150
* 获取当前App信息
139-
* AppInfo(名称,图标,包名,版本号,版本Code,是否安装在SD卡,是否是用户程序)
151+
* <p>AppInfo(名称,图标,包名,版本号,版本Code,是否安装在SD卡,是否是用户程序)
140152
*/
141153
public static AppInfo getAppInfo(Context context) {
142154
PackageManager pm = context.getPackageManager();
@@ -154,7 +166,7 @@ public static AppInfo getAppInfo(Context context) {
154166
*/
155167
private static AppInfo getBean(PackageManager pm, PackageInfo pi) {
156168
ApplicationInfo ai = pi.applicationInfo;
157-
String name = pi.packageName;
169+
String name = ai.loadLabel(pm).toString();
158170
Drawable icon = ai.loadIcon(pm);
159171
String packageName = pi.packageName;
160172
String versionName = pi.versionName;
@@ -169,8 +181,8 @@ private static AppInfo getBean(PackageManager pm, PackageInfo pi) {
169181
```
170182
/**
171183
* 获取所有已安装App信息
172-
* AppInfo(名称,图标,包名,版本号,版本Code,是否安装在SD卡,是否是用户程序)
173-
* 依赖上面的getBean方法
184+
* <p>AppInfo(名称,图标,包名,版本号,版本Code,是否安装在SD卡,是否是用户程序)
185+
* <p>依赖上面的getBean方法
174186
*/
175187
public static List<AppInfo> getAllAppsInfo(Context context) {
176188
List<AppInfo> list = new ArrayList<>();
@@ -240,8 +252,8 @@ public static void shareAppInfo(Context context, String info) {
240252
``` java
241253
/**
242254
* 判断当前App处于前台还是后台
243-
* 需添加<uses-permission android:name="android.permission.GET_TASKS"/>
244-
* 并且必须是系统应用该方法才有效
255+
* <p>需添加<uses-permission android:name="android.permission.GET_TASKS"/>
256+
* <p>并且必须是系统应用该方法才有效
245257
*/
246258
public static boolean isAppBackground(Context context) {
247259
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

about_device.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@
33
``` java
44
/**
55
* 获取设备MAC地址
6-
* 需添加权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
6+
* <p>需添加权限<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
77
*/
88
public static String getMacAddress(Context context) {
9-
String macAddress = null;
9+
String macAddress;
1010
WifiManager wifi = (WifiManager) context
1111
.getSystemService(Context.WIFI_SERVICE);
1212
WifiInfo info = wifi.getConnectionInfo();
13-
if (null != info ) {
14-
macAddress = info.getMacAddress();
15-
if (null != macAddress) {
16-
macAddress = macAddress.replace(":", "");
17-
}
13+
macAddress = info.getMacAddress();
14+
if (null == macAddress) {
15+
return "";
1816
}
17+
macAddress = macAddress.replace(":", "");
1918
return macAddress;
2019
}
2120
```
@@ -61,6 +60,7 @@ public static boolean isSDCardEnable() {
6160
```
6261
/**
6362
* 获取设备SD卡路径
63+
* <p>一般是/storage/emulated/0/
6464
*/
6565
public static String getSDCardPath() {
6666
return Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;

about_keyboard.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ public static void hideSoftInput(Context context, EditText edit) {
3333
### 点击屏幕空白区域隐藏软键盘
3434
``` java
3535
/**
36-
* 点击屏幕空白区域隐藏软键盘(方法1
37-
* 在onTouch中处理,未获焦点则隐藏
38-
* 参照以下注释代码
36+
* 点击屏幕空白区域隐藏软键盘(方法0
37+
* <p>在onTouch中处理,未获焦点则隐藏
38+
* <p>参照以下注释代码
3939
*/
4040
public static void clickBlankArea2HideSoftInput0() {
4141
Log.i("tips", "U should copy the following code.");
@@ -52,10 +52,10 @@ public static void clickBlankArea2HideSoftInput0() {
5252
}
5353

5454
/**
55-
* 点击屏幕空白区域隐藏软键盘(方法2
56-
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘
57-
* 需重写dispatchTouchEvent
58-
* 参照以下注释代码
55+
* 点击屏幕空白区域隐藏软键盘(方法1
56+
* <p>根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘
57+
* <p>需重写dispatchTouchEvent
58+
* <p>参照以下注释代码
5959
*/
6060
public static void clickBlankArea2HideSoftInput1() {
6161
Log.i("tips", "U should copy the following code.");

0 commit comments

Comments
 (0)