Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
8880b13c
A
AndroidUtilCode
项目概览
mmm-rain
/
AndroidUtilCode
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AndroidUtilCode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8880b13c
编写于
4月 26, 2019
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 04/26 log
上级
17dd4d80
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
140 addition
and
45 deletion
+140
-45
CHANGELOG.md
CHANGELOG.md
+1
-0
utilcode/README-CN.md
utilcode/README-CN.md
+3
-3
utilcode/README.md
utilcode/README.md
+5
-2
utilcode/lib/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java
.../main/java/com/blankj/utilcode/util/AdaptScreenUtils.java
+20
-2
utilcode/lib/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
...b/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
+1
-1
utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
.../lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
+15
-4
utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
.../src/main/java/com/blankj/utilcode/util/NetworkUtils.java
+26
-0
utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
...src/main/java/com/blankj/utilcode/util/ResourceUtils.java
+10
-0
utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
...ib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
+10
-3
utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
...b/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
+8
-6
utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
.../lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
+8
-14
utilcode/lib/src/test/java/com/blankj/utilcode/util/EncryptUtilsTest.java
.../test/java/com/blankj/utilcode/util/EncryptUtilsTest.java
+2
-3
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
...n/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
+1
-1
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
...om/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
+30
-6
未找到文件。
CHANGELOG.md
浏览文件 @
8880b13c
*
`19/04/25`
[fix] LogUtils delete due log.
*
`19/04/24`
[upd] The swipe panel.
*
`19/04/24`
[upd] The swipe panel.
*
`19/03/17`
[fix] The ugly UI.
*
`19/03/17`
[fix] The ugly UI.
*
`19/03/14`
[fix] AdaptScreenUtils didn't work on some HaWei tablet.
*
`19/03/14`
[fix] AdaptScreenUtils didn't work on some HaWei tablet.
...
...
utilcode/README-CN.md
浏览文件 @
8880b13c
...
@@ -281,8 +281,8 @@ shutdown : 关机
...
@@ -281,8 +281,8 @@ shutdown : 关机
reboot : 重启
reboot : 重启
reboot2Recovery : 重启到 recovery
reboot2Recovery : 重启到 recovery
reboot2Bootloader: 重启到 bootloader
reboot2Bootloader: 重启到 bootloader
isTablet
: 判断是否是平板
isTablet : 判断是否是平板
isEmulator
: 判断是否是模拟器
isEmulator : 判断是否是模拟器
```
```
*
### 闪光灯相关 ->
[
FlashlightUtils.java
][
flashlight.java
]
->
[
Demo
][
flashlight.demo
]
*
### 闪光灯相关 ->
[
FlashlightUtils.java
][
flashlight.java
]
->
[
Demo
][
flashlight.demo
]
...
@@ -543,7 +543,7 @@ isWifiConnected : 判断 wifi 是否连接状态
...
@@ -543,7 +543,7 @@ isWifiConnected : 判断 wifi 是否连接状态
isWifiAvailable[Async] : 判断 wifi 数据是否可用
isWifiAvailable[Async] : 判断 wifi 数据是否可用
getNetworkOperatorName : 获取移动网络运营商名称
getNetworkOperatorName : 获取移动网络运营商名称
getNetworkType : 获取当前网络类型
getNetworkType : 获取当前网络类型
getIPAddress
: 获取 IP 地址
getIPAddress
[Async]
: 获取 IP 地址
getDomainAddress[Async] : 获取域名 IP 地址
getDomainAddress[Async] : 获取域名 IP 地址
getIpAddressByWifi : 根据 WiFi 获取网络 IP 地址
getIpAddressByWifi : 根据 WiFi 获取网络 IP 地址
getGatewayByWifi : 根据 WiFi 获取网关 IP 地址
getGatewayByWifi : 根据 WiFi 获取网关 IP 地址
...
...
utilcode/README.md
浏览文件 @
8880b13c
...
@@ -281,6 +281,8 @@ shutdown
...
@@ -281,6 +281,8 @@ shutdown
reboot
reboot
reboot2Recovery
reboot2Recovery
reboot2Bootloader
reboot2Bootloader
isTablet
isEmulator
```
```
*
### About Flashlight ->
[
FlashlightUtils.java
][
flashlight.java
]
->
[
Demo
][
flashlight.demo
]
*
### About Flashlight ->
[
FlashlightUtils.java
][
flashlight.java
]
->
[
Demo
][
flashlight.demo
]
...
@@ -541,7 +543,7 @@ isWifiConnected
...
@@ -541,7 +543,7 @@ isWifiConnected
isWifiAvailable[Async] : 判断 wifi 数据是否可用
isWifiAvailable[Async] : 判断 wifi 数据是否可用
getNetworkOperatorName
getNetworkOperatorName
getNetworkType
getNetworkType
getIPAddress
getIPAddress
[Async] : 获取 IP 地址
getDomainAddress[Async] : 获取域名 IP 地址
getDomainAddress[Async] : 获取域名 IP 地址
getIpAddressByWifi
getIpAddressByWifi
getGatewayByWifi
getGatewayByWifi
...
@@ -712,6 +714,8 @@ getRomInfo
...
@@ -712,6 +714,8 @@ getRomInfo
```
```
getScreenWidth
getScreenWidth
getScreenHeight
getScreenHeight
getAppScreenWidth
getAppScreenHeight
getScreenDensity
getScreenDensity
getScreenDensityDpi
getScreenDensityDpi
setFullScreen
setFullScreen
...
@@ -727,7 +731,6 @@ screenShot
...
@@ -727,7 +731,6 @@ screenShot
isScreenLock
isScreenLock
setSleepDuration
setSleepDuration
getSleepDuration
getSleepDuration
isTablet
```
```
*
### About SDCard ->
[
SDCardUtils.java
][
sdcard.java
]
->
[
Demo
][
sdcard.demo
]
*
### About SDCard ->
[
SDCardUtils.java
][
sdcard.java
]
->
[
Demo
][
sdcard.demo
]
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java
浏览文件 @
8880b13c
...
@@ -17,7 +17,7 @@ public final class AdaptScreenUtils {
...
@@ -17,7 +17,7 @@ public final class AdaptScreenUtils {
* Adapt for the horizontal screen, and call it in [android.app.Activity.getResources].
* Adapt for the horizontal screen, and call it in [android.app.Activity.getResources].
*/
*/
public
static
Resources
adaptWidth
(
final
Resources
resources
,
final
int
designWidth
)
{
public
static
Resources
adaptWidth
(
final
Resources
resources
,
final
int
designWidth
)
{
float
newXdpi
=
(
Resources
.
getSystem
()
.
getDisplayMetrics
().
widthPixels
*
72
f
)
/
designWidth
;
float
newXdpi
=
(
resources
.
getDisplayMetrics
().
widthPixels
*
72
f
)
/
designWidth
;
applyDisplayMetrics
(
resources
,
newXdpi
);
applyDisplayMetrics
(
resources
,
newXdpi
);
return
resources
;
return
resources
;
}
}
...
@@ -26,11 +26,29 @@ public final class AdaptScreenUtils {
...
@@ -26,11 +26,29 @@ public final class AdaptScreenUtils {
* Adapt for the vertical screen, and call it in [android.app.Activity.getResources].
* Adapt for the vertical screen, and call it in [android.app.Activity.getResources].
*/
*/
public
static
Resources
adaptHeight
(
final
Resources
resources
,
final
int
designHeight
)
{
public
static
Resources
adaptHeight
(
final
Resources
resources
,
final
int
designHeight
)
{
float
newXdpi
=
(
Resources
.
getSystem
().
getDisplayMetrics
().
heightPixels
*
72
f
)
/
designHeight
;
return
adaptHeight
(
resources
,
designHeight
,
false
);
}
/**
* Adapt for the vertical screen, and call it in [android.app.Activity.getResources].
*/
public
static
Resources
adaptHeight
(
final
Resources
resources
,
final
int
designHeight
,
final
boolean
includeNavBar
)
{
float
screenHeight
=
resources
.
getDisplayMetrics
().
heightPixels
*
72
f
+
(
includeNavBar
?
getNavBarHeight
(
resources
)
:
0
);
float
newXdpi
=
screenHeight
/
designHeight
;
applyDisplayMetrics
(
resources
,
newXdpi
);
applyDisplayMetrics
(
resources
,
newXdpi
);
return
resources
;
return
resources
;
}
}
private
static
int
getNavBarHeight
(
final
Resources
resources
)
{
int
resourceId
=
resources
.
getIdentifier
(
"navigation_bar_height"
,
"dimen"
,
"android"
);
if
(
resourceId
!=
0
)
{
return
resources
.
getDimensionPixelSize
(
resourceId
);
}
else
{
return
0
;
}
}
/**
/**
* @param resources The resources.
* @param resources The resources.
* @return the resource
* @return the resource
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
浏览文件 @
8880b13c
...
@@ -31,7 +31,7 @@ import java.util.List;
...
@@ -31,7 +31,7 @@ import java.util.List;
*/
*/
public
final
class
FileIOUtils
{
public
final
class
FileIOUtils
{
private
static
int
sBufferSize
=
8192
;
private
static
int
sBufferSize
=
524288
;
private
FileIOUtils
()
{
private
FileIOUtils
()
{
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
浏览文件 @
8880b13c
...
@@ -46,6 +46,8 @@ import java.util.Locale;
...
@@ -46,6 +46,8 @@ import java.util.Locale;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
javax.xml.transform.OutputKeys
;
import
javax.xml.transform.OutputKeys
;
import
javax.xml.transform.Source
;
import
javax.xml.transform.Source
;
...
@@ -526,19 +528,19 @@ public final class LogUtils {
...
@@ -526,19 +528,19 @@ public final class LogUtils {
File
[]
files
=
parentFile
.
listFiles
(
new
FilenameFilter
()
{
File
[]
files
=
parentFile
.
listFiles
(
new
FilenameFilter
()
{
@Override
@Override
public
boolean
accept
(
File
dir
,
String
name
)
{
public
boolean
accept
(
File
dir
,
String
name
)
{
return
name
.
matches
(
"^"
+
CONFIG
.
getFilePrefix
()
+
"-[0-9]{4}-[0-9]{2}-[0-9]{2}-
"
+
CONFIG
.
getProcessName
()
+
"
.txt$"
);
return
name
.
matches
(
"^"
+
CONFIG
.
getFilePrefix
()
+
"-[0-9]{4}-[0-9]{2}-[0-9]{2}-
.*\\
.txt$"
);
}
}
});
});
if
(
files
==
null
||
files
.
length
<=
0
)
return
;
if
(
files
==
null
||
files
.
length
<=
0
)
return
;
final
int
length
=
filePath
.
length
();
final
int
length
=
filePath
.
length
();
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
,
Locale
.
getDefault
());
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
,
Locale
.
getDefault
());
try
{
try
{
String
curDay
=
fi
lePath
.
substring
(
length
-
14
,
length
-
4
);
String
curDay
=
fi
ndDate
(
filePath
);
long
dueMillis
=
sdf
.
parse
(
curDay
).
getTime
()
-
CONFIG
.
getSaveDays
()
*
86400000L
;
long
dueMillis
=
sdf
.
parse
(
curDay
).
getTime
()
-
CONFIG
.
getSaveDays
()
*
86400000L
;
for
(
final
File
aFile
:
files
)
{
for
(
final
File
aFile
:
files
)
{
String
name
=
aFile
.
getName
();
String
name
=
aFile
.
getName
();
int
l
=
name
.
length
();
int
l
=
name
.
length
();
String
logDay
=
name
.
substring
(
l
-
14
,
l
-
4
);
String
logDay
=
findDate
(
name
);
if
(
sdf
.
parse
(
logDay
).
getTime
()
<=
dueMillis
)
{
if
(
sdf
.
parse
(
logDay
).
getTime
()
<=
dueMillis
)
{
EXECUTOR
.
execute
(
new
Runnable
()
{
EXECUTOR
.
execute
(
new
Runnable
()
{
@Override
@Override
...
@@ -556,6 +558,15 @@ public final class LogUtils {
...
@@ -556,6 +558,15 @@ public final class LogUtils {
}
}
}
}
private
static
String
findDate
(
String
str
)
{
Pattern
pattern
=
Pattern
.
compile
(
"[0-9]{4}-[0-9]{2}-[0-9]{2}"
);
Matcher
matcher
=
pattern
.
matcher
(
str
);
if
(
matcher
.
find
())
{
return
matcher
.
group
();
}
return
""
;
}
private
static
void
printDeviceInfo
(
final
String
filePath
)
{
private
static
void
printDeviceInfo
(
final
String
filePath
)
{
String
versionName
=
""
;
String
versionName
=
""
;
int
versionCode
=
0
;
int
versionCode
=
0
;
...
@@ -817,7 +828,7 @@ public final class LogUtils {
...
@@ -817,7 +828,7 @@ public final class LogUtils {
BufferedReader
mBufferedReader
=
new
BufferedReader
(
new
FileReader
(
file
));
BufferedReader
mBufferedReader
=
new
BufferedReader
(
new
FileReader
(
file
));
String
processName
=
mBufferedReader
.
readLine
().
trim
();
String
processName
=
mBufferedReader
.
readLine
().
trim
();
mBufferedReader
.
close
();
mBufferedReader
.
close
();
return
processName
;
return
processName
.
replace
(
":"
,
"_"
)
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
return
""
;
return
""
;
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
浏览文件 @
8880b13c
...
@@ -82,6 +82,7 @@ public final class NetworkUtils {
...
@@ -82,6 +82,7 @@ public final class NetworkUtils {
* <p>Must hold {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
* <p>Must hold {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
*
*
* @param callback The callback.
* @param callback The callback.
* @return the task
*/
*/
@RequiresPermission
(
INTERNET
)
@RequiresPermission
(
INTERNET
)
public
static
Utils
.
Task
<
Boolean
>
isAvailableAsync
(
@NonNull
final
Utils
.
Callback
<
Boolean
>
callback
)
{
public
static
Utils
.
Task
<
Boolean
>
isAvailableAsync
(
@NonNull
final
Utils
.
Callback
<
Boolean
>
callback
)
{
...
@@ -123,6 +124,7 @@ public final class NetworkUtils {
...
@@ -123,6 +124,7 @@ public final class NetworkUtils {
*
*
* @param ip The ip address.
* @param ip The ip address.
* @param callback The callback.
* @param callback The callback.
* @return the task
*/
*/
@RequiresPermission
(
INTERNET
)
@RequiresPermission
(
INTERNET
)
public
static
Utils
.
Task
<
Boolean
>
isAvailableByPingAsync
(
final
String
ip
,
public
static
Utils
.
Task
<
Boolean
>
isAvailableByPingAsync
(
final
String
ip
,
...
@@ -186,6 +188,7 @@ public final class NetworkUtils {
...
@@ -186,6 +188,7 @@ public final class NetworkUtils {
*
*
* @param domain The name of domain.
* @param domain The name of domain.
* @param callback The callback.
* @param callback The callback.
* @return the task
*/
*/
@RequiresPermission
(
INTERNET
)
@RequiresPermission
(
INTERNET
)
public
static
Utils
.
Task
isAvailableByDnsAsync
(
final
String
domain
,
public
static
Utils
.
Task
isAvailableByDnsAsync
(
final
String
domain
,
...
@@ -373,6 +376,9 @@ public final class NetworkUtils {
...
@@ -373,6 +376,9 @@ public final class NetworkUtils {
* Return whether wifi is available.
* Return whether wifi is available.
* <p>Must hold {@code <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />},
* <p>Must hold {@code <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />},
* {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
* {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
*
* @param callback The callback.
* @return the task
*/
*/
@RequiresPermission
(
allOf
=
{
ACCESS_WIFI_STATE
,
INTERNET
})
@RequiresPermission
(
allOf
=
{
ACCESS_WIFI_STATE
,
INTERNET
})
public
static
Utils
.
Task
<
Boolean
>
isWifiAvailableAsync
(
@NonNull
final
Utils
.
Callback
<
Boolean
>
callback
)
{
public
static
Utils
.
Task
<
Boolean
>
isWifiAvailableAsync
(
@NonNull
final
Utils
.
Callback
<
Boolean
>
callback
)
{
...
@@ -487,6 +493,25 @@ public final class NetworkUtils {
...
@@ -487,6 +493,25 @@ public final class NetworkUtils {
return
cm
.
getActiveNetworkInfo
();
return
cm
.
getActiveNetworkInfo
();
}
}
/**
* Return the ip address.
* <p>Must hold {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
*
* @param useIPv4 True to use ipv4, false otherwise.
* @param callback The callback.
* @return the task
*/
public
static
Utils
.
Task
<
String
>
getIPAddressAsync
(
final
boolean
useIPv4
,
@NonNull
final
Utils
.
Callback
<
String
>
callback
)
{
return
Utils
.
doAsync
(
new
Utils
.
Task
<
String
>(
callback
)
{
@RequiresPermission
(
INTERNET
)
@Override
public
String
doInBackground
()
{
return
getIPAddress
(
useIPv4
);
}
});
}
/**
/**
* Return the ip address.
* Return the ip address.
* <p>Must hold {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
* <p>Must hold {@code <uses-permission android:name="android.permission.INTERNET" />}</p>
...
@@ -563,6 +588,7 @@ public final class NetworkUtils {
...
@@ -563,6 +588,7 @@ public final class NetworkUtils {
*
*
* @param domain The name of domain.
* @param domain The name of domain.
* @param callback The callback.
* @param callback The callback.
* @return the task
*/
*/
@RequiresPermission
(
INTERNET
)
@RequiresPermission
(
INTERNET
)
public
static
Utils
.
Task
<
String
>
getDomainAddressAsync
(
final
String
domain
,
public
static
Utils
.
Task
<
String
>
getDomainAddressAsync
(
final
String
domain
,
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
浏览文件 @
8880b13c
...
@@ -31,6 +31,16 @@ public final class ResourceUtils {
...
@@ -31,6 +31,16 @@ public final class ResourceUtils {
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
}
}
/**
* Return the drawable identifier by name.
*
* @param name The name of drawable.
* @return the drawable identifier by name
*/
public
static
int
getDrawableIdByName
(
String
name
)
{
return
Utils
.
getApp
().
getResources
().
getIdentifier
(
name
,
"drawable"
,
Utils
.
getApp
().
getPackageName
());
}
/**
/**
* Copy the file from assets.
* Copy the file from assets.
*
*
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
浏览文件 @
8880b13c
...
@@ -31,7 +31,9 @@ public final class ShellUtils {
...
@@ -31,7 +31,9 @@ public final class ShellUtils {
* @param isRooted True to use root, false otherwise.
* @param isRooted True to use root, false otherwise.
* @param callback The callback.
* @param callback The callback.
*/
*/
public
static
void
execCmdAsync
(
final
String
command
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
public
static
void
execCmdAsync
(
final
String
command
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
execCmdAsync
(
new
String
[]{
command
},
isRooted
,
true
,
callback
);
execCmdAsync
(
new
String
[]{
command
},
isRooted
,
true
,
callback
);
}
}
...
@@ -42,7 +44,9 @@ public final class ShellUtils {
...
@@ -42,7 +44,9 @@ public final class ShellUtils {
* @param isRooted True to use root, false otherwise.
* @param isRooted True to use root, false otherwise.
* @param callback The callback.
* @param callback The callback.
*/
*/
public
static
void
execCmdAsync
(
final
List
<
String
>
commands
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
public
static
void
execCmdAsync
(
final
List
<
String
>
commands
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
execCmdAsync
(
commands
==
null
?
null
:
commands
.
toArray
(
new
String
[]{}),
isRooted
,
true
,
callback
);
execCmdAsync
(
commands
==
null
?
null
:
commands
.
toArray
(
new
String
[]{}),
isRooted
,
true
,
callback
);
}
}
...
@@ -53,7 +57,9 @@ public final class ShellUtils {
...
@@ -53,7 +57,9 @@ public final class ShellUtils {
* @param isRooted True to use root, false otherwise.
* @param isRooted True to use root, false otherwise.
* @param callback The callback.
* @param callback The callback.
*/
*/
public
static
void
execCmdAsync
(
final
String
[]
commands
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
public
static
void
execCmdAsync
(
final
String
[]
commands
,
final
boolean
isRooted
,
final
Utils
.
Callback
<
CommandResult
>
callback
)
{
execCmdAsync
(
commands
,
isRooted
,
true
,
callback
);
execCmdAsync
(
commands
,
isRooted
,
true
,
callback
);
}
}
...
@@ -97,6 +103,7 @@ public final class ShellUtils {
...
@@ -97,6 +103,7 @@ public final class ShellUtils {
* @param isRooted True to use root, false otherwise.
* @param isRooted True to use root, false otherwise.
* @param isNeedResultMsg True to return the message of result, false otherwise.
* @param isNeedResultMsg True to return the message of result, false otherwise.
* @param callback The callback.
* @param callback The callback.
* @return the task
*/
*/
public
static
Utils
.
Task
<
CommandResult
>
execCmdAsync
(
final
String
[]
commands
,
public
static
Utils
.
Task
<
CommandResult
>
execCmdAsync
(
final
String
[]
commands
,
final
boolean
isRooted
,
final
boolean
isRooted
,
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
浏览文件 @
8880b13c
...
@@ -4,8 +4,8 @@ import android.os.Handler;
...
@@ -4,8 +4,8 @@ import android.os.Handler;
import
android.os.Looper
;
import
android.os.Looper
;
import
android.support.annotation.IntRange
;
import
android.support.annotation.IntRange
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.util.Log
;
import
android.util.Log
;
import
android.util.SparseArray
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -30,8 +30,8 @@ import java.util.concurrent.atomic.AtomicLong;
...
@@ -30,8 +30,8 @@ import java.util.concurrent.atomic.AtomicLong;
*/
*/
public
final
class
ThreadUtils
{
public
final
class
ThreadUtils
{
private
static
final
SparseArray
<
SparseArray
<
ExecutorService
>>
TYPE_PRIORITY_POOLS
=
new
SparseArray
<>();
private
static
final
HashMap
<
Integer
,
Map
<
Integer
,
ExecutorService
>>
TYPE_PRIORITY_POOLS
=
new
HashMap
<>();
private
static
final
Map
<
Task
,
ScheduledExecutorService
>
TASK_SCHEDULED
=
new
HashMap
<>();
private
static
final
Map
<
Task
,
ScheduledExecutorService
>
TASK_SCHEDULED
=
new
HashMap
<>();
private
static
final
byte
TYPE_SINGLE
=
-
1
;
private
static
final
byte
TYPE_SINGLE
=
-
1
;
private
static
final
byte
TYPE_CACHED
=
-
2
;
private
static
final
byte
TYPE_CACHED
=
-
2
;
...
@@ -912,9 +912,9 @@ public final class ThreadUtils {
...
@@ -912,9 +912,9 @@ public final class ThreadUtils {
private
synchronized
static
ExecutorService
getPoolByTypeAndPriority
(
final
int
type
,
final
int
priority
)
{
private
synchronized
static
ExecutorService
getPoolByTypeAndPriority
(
final
int
type
,
final
int
priority
)
{
ExecutorService
pool
;
ExecutorService
pool
;
SparseArray
<
ExecutorService
>
priorityPools
=
TYPE_PRIORITY_POOLS
.
get
(
type
);
Map
<
Integer
,
ExecutorService
>
priorityPools
=
TYPE_PRIORITY_POOLS
.
get
(
type
);
if
(
priorityPools
==
null
)
{
if
(
priorityPools
==
null
)
{
priorityPools
=
new
SparseArray
<>();
priorityPools
=
new
HashMap
<>();
pool
=
createPoolByTypeAndPriority
(
type
,
priority
);
pool
=
createPoolByTypeAndPriority
(
type
,
priority
);
priorityPools
.
put
(
priority
,
pool
);
priorityPools
.
put
(
priority
,
pool
);
TYPE_PRIORITY_POOLS
.
put
(
type
,
priorityPools
);
TYPE_PRIORITY_POOLS
.
put
(
type
,
priorityPools
);
...
@@ -998,9 +998,10 @@ public final class ThreadUtils {
...
@@ -998,9 +998,10 @@ public final class ThreadUtils {
private
volatile
int
state
=
NEW
;
private
volatile
int
state
=
NEW
;
private
boolean
isSchedule
;
private
boolean
isSchedule
;
@Nullable
public
abstract
T
doInBackground
()
throws
Throwable
;
public
abstract
T
doInBackground
()
throws
Throwable
;
public
abstract
void
onSuccess
(
T
result
);
public
abstract
void
onSuccess
(
@Nullable
T
result
);
public
abstract
void
onCancel
();
public
abstract
void
onCancel
();
...
@@ -1080,6 +1081,7 @@ public final class ThreadUtils {
...
@@ -1080,6 +1081,7 @@ public final class ThreadUtils {
this
.
priority
=
priority
;
this
.
priority
=
priority
;
}
}
@Override
public
Thread
newThread
(
@NonNull
Runnable
r
)
{
public
Thread
newThread
(
@NonNull
Runnable
r
)
{
Thread
t
=
new
Thread
(
r
,
namePrefix
+
getAndIncrement
())
{
Thread
t
=
new
Thread
(
r
,
namePrefix
+
getAndIncrement
())
{
@Override
@Override
...
...
utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
浏览文件 @
8880b13c
...
@@ -10,7 +10,7 @@ import org.robolectric.RuntimeEnvironment;
...
@@ -10,7 +10,7 @@ import org.robolectric.RuntimeEnvironment;
import
org.robolectric.annotation.Config
;
import
org.robolectric.annotation.Config
;
import
org.robolectric.shadows.ShadowLog
;
import
org.robolectric.shadows.ShadowLog
;
import
java.util.
TreeSet
;
import
java.util.
concurrent.Executor
;
/**
/**
* <pre>
* <pre>
...
@@ -21,28 +21,22 @@ import java.util.TreeSet;
...
@@ -21,28 +21,22 @@ import java.util.TreeSet;
* </pre>
* </pre>
*/
*/
@RunWith
(
RobolectricTestRunner
.
class
)
@RunWith
(
RobolectricTestRunner
.
class
)
@Config
(
manifest
=
Config
.
NONE
,
shadows
=
{
ShadowLog
.
class
}
,
sdk
=
19
)
@Config
(
manifest
=
Config
.
NONE
,
shadows
=
{
ShadowLog
.
class
})
public
class
BaseTest
{
public
class
BaseTest
{
public
BaseTest
()
{
public
BaseTest
()
{
ShadowLog
.
stream
=
System
.
out
;
ShadowLog
.
stream
=
System
.
out
;
ThreadUtils
.
setDeliver
(
new
Executor
()
{
@Override
public
void
execute
(
@NonNull
Runnable
command
)
{
command
.
run
();
}
});
Utils
.
init
(
RuntimeEnvironment
.
application
);
Utils
.
init
(
RuntimeEnvironment
.
application
);
}
}
@Test
@Test
public
void
test
()
throws
Exception
{
public
void
test
()
throws
Exception
{
TreeSet
<
Person
>
people
=
new
TreeSet
<>();
people
.
add
(
new
Person
(
"1"
,
1
,
0
));
people
.
add
(
new
Person
(
"3"
,
3
,
0
));
people
.
add
(
new
Person
(
"3"
,
3
,
1
));
people
.
add
(
new
Person
(
"2"
,
2
,
0
));
for
(
Person
person
:
people
)
{
System
.
out
.
println
(
person
);
}
System
.
out
.
println
(
people
);
// final Scanner scanner = new Scanner(System.in);
// final Scanner scanner = new Scanner(System.in);
//
//
// final CountDownLatch countDownLatch = new CountDownLatch(1);
// final CountDownLatch countDownLatch = new CountDownLatch(1);
...
...
utilcode/lib/src/test/java/com/blankj/utilcode/util/EncryptUtilsTest.java
浏览文件 @
8880b13c
...
@@ -530,7 +530,6 @@ public class EncryptUtilsTest extends BaseTest {
...
@@ -530,7 +530,6 @@ public class EncryptUtilsTest extends BaseTest {
}
catch
(
NoSuchAlgorithmException
e
)
{
}
catch
(
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
System
.
out
.
println
(
EncodeUtils
.
base64Decode
(
publicKey
.
getBytes
()).
length
);
assertTrue
(
assertTrue
(
Arrays
.
equals
(
Arrays
.
equals
(
EncryptUtils
.
decryptRSA
(
EncryptUtils
.
decryptRSA
(
...
@@ -538,11 +537,11 @@ public class EncryptUtilsTest extends BaseTest {
...
@@ -538,11 +537,11 @@ public class EncryptUtilsTest extends BaseTest {
dataRSA
.
getBytes
(),
dataRSA
.
getBytes
(),
base64Decode
(
publicKey
.
getBytes
()),
base64Decode
(
publicKey
.
getBytes
()),
true
,
true
,
"RSA/ECB/
No
Padding"
"RSA/ECB/
PKCS1
Padding"
),
),
base64Decode
(
privateKey
.
getBytes
()),
base64Decode
(
privateKey
.
getBytes
()),
false
,
false
,
"RSA/ECB/
No
Padding"
"RSA/ECB/
PKCS1
Padding"
),
),
dataRSA
.
getBytes
()
dataRSA
.
getBytes
()
)
)
...
...
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
浏览文件 @
8880b13c
...
@@ -133,7 +133,7 @@ class ReleaseInstallApkTask(private val mListener: OnReleasedListener) : ThreadU
...
@@ -133,7 +133,7 @@ class ReleaseInstallApkTask(private val mListener: OnReleasedListener) : ThreadU
ResourceUtils
.
copyFileFromAssets
(
"test_install"
,
Config
.
TEST_APK_PATH
)
ResourceUtils
.
copyFileFromAssets
(
"test_install"
,
Config
.
TEST_APK_PATH
)
}
}
override
fun
onSuccess
(
result
:
Unit
)
{
override
fun
onSuccess
(
result
:
Unit
?
)
{
mListener
.
onReleased
()
mListener
.
onReleased
()
}
}
...
...
utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
浏览文件 @
8880b13c
...
@@ -80,6 +80,8 @@ class NetworkActivity : BaseTitleActivity() {
...
@@ -80,6 +80,8 @@ class NetworkActivity : BaseTitleActivity() {
updateAboutNetwork
()
updateAboutNetwork
()
}
}
private
lateinit
var
ipV4AddressAsyncTask
:
Utils
.
Task
<
String
>
private
lateinit
var
ipV6AddressAsyncTask
:
Utils
.
Task
<
String
>
private
lateinit
var
wifiAvailableAsyncTask
:
Utils
.
Task
<
Boolean
>
private
lateinit
var
wifiAvailableAsyncTask
:
Utils
.
Task
<
Boolean
>
private
lateinit
var
availableAsyncTask
:
Utils
.
Task
<
Boolean
>
private
lateinit
var
availableAsyncTask
:
Utils
.
Task
<
Boolean
>
private
lateinit
var
domainAddressAsyncTask
:
Utils
.
Task
<
String
>
private
lateinit
var
domainAddressAsyncTask
:
Utils
.
Task
<
String
>
...
@@ -94,19 +96,39 @@ class NetworkActivity : BaseTitleActivity() {
...
@@ -94,19 +96,39 @@ class NetworkActivity : BaseTitleActivity() {
.
appendLine
(
"isWifiConnected: "
+
NetworkUtils
.
isWifiConnected
())
.
appendLine
(
"isWifiConnected: "
+
NetworkUtils
.
isWifiConnected
())
.
appendLine
(
"getNetworkOperatorName: "
+
NetworkUtils
.
getNetworkOperatorName
())
.
appendLine
(
"getNetworkOperatorName: "
+
NetworkUtils
.
getNetworkOperatorName
())
.
appendLine
(
"getNetworkTypeName: "
+
NetworkUtils
.
getNetworkType
())
.
appendLine
(
"getNetworkTypeName: "
+
NetworkUtils
.
getNetworkType
())
.
appendLine
(
"getIPv4Address: "
+
NetworkUtils
.
getIPAddress
(
true
))
.
appendLine
(
"getIPv6Address: "
+
NetworkUtils
.
getIPAddress
(
false
))
.
appendLine
(
"getBroadcastIpAddress: "
+
NetworkUtils
.
getBroadcastIpAddress
())
.
appendLine
(
"getBroadcastIpAddress: "
+
NetworkUtils
.
getBroadcastIpAddress
())
.
appendLine
(
"getIpAddressByWifi: "
+
NetworkUtils
.
getIpAddressByWifi
())
.
appendLine
(
"getIpAddressByWifi: "
+
NetworkUtils
.
getIpAddressByWifi
())
.
appendLine
(
"getGatewayByWifi: "
+
NetworkUtils
.
getGatewayByWifi
())
.
appendLine
(
"getGatewayByWifi: "
+
NetworkUtils
.
getGatewayByWifi
())
.
appendLine
(
"getNetMaskByWifi: "
+
NetworkUtils
.
getNetMaskByWifi
())
.
appendLine
(
"getNetMaskByWifi: "
+
NetworkUtils
.
getNetMaskByWifi
())
.
append
(
"getServerAddressByWifi: "
+
NetworkUtils
.
getServerAddressByWifi
())
.
append
(
"getServerAddressByWifi: "
+
NetworkUtils
.
getServerAddressByWifi
())
.
create
()
.
create
()
cur
+=
3
cur
+=
5
ipV4AddressAsyncTask
=
NetworkUtils
.
getIPAddressAsync
(
true
)
{
data
->
val
num
=
count
.
get
()
if
(
num
>=
cur
-
5
)
{
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
.
append
(
"getIPv4Address: $data"
)
.
create
()
networkAboutTv
.
text
=
spanSb
}
count
.
addAndGet
(
1
)
}
ipV6AddressAsyncTask
=
NetworkUtils
.
getIPAddressAsync
(
false
)
{
data
->
val
num
=
count
.
get
()
if
(
num
>=
cur
-
5
)
{
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
.
append
(
"getIPv6Address: $data"
)
.
create
()
networkAboutTv
.
text
=
spanSb
}
count
.
addAndGet
(
1
)
}
wifiAvailableAsyncTask
=
NetworkUtils
.
isWifiAvailableAsync
{
data
->
wifiAvailableAsyncTask
=
NetworkUtils
.
isWifiAvailableAsync
{
data
->
val
num
=
count
.
get
()
val
num
=
count
.
get
()
if
(
num
>=
cur
-
3
)
{
if
(
num
>=
cur
-
5
)
{
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
.
append
(
"isWifiAvailable: $data"
)
.
append
(
"isWifiAvailable: $data"
)
.
create
()
.
create
()
...
@@ -117,7 +139,7 @@ class NetworkActivity : BaseTitleActivity() {
...
@@ -117,7 +139,7 @@ class NetworkActivity : BaseTitleActivity() {
availableAsyncTask
=
NetworkUtils
.
isAvailableAsync
{
data
->
availableAsyncTask
=
NetworkUtils
.
isAvailableAsync
{
data
->
val
num
=
count
.
get
()
val
num
=
count
.
get
()
if
(
num
>=
cur
-
3
)
{
if
(
num
>=
cur
-
5
)
{
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
.
append
(
"isAvailable: $data"
)
.
append
(
"isAvailable: $data"
)
.
create
()
.
create
()
...
@@ -128,7 +150,7 @@ class NetworkActivity : BaseTitleActivity() {
...
@@ -128,7 +150,7 @@ class NetworkActivity : BaseTitleActivity() {
domainAddressAsyncTask
=
NetworkUtils
.
getDomainAddressAsync
(
"baidu.com"
)
{
data
->
domainAddressAsyncTask
=
NetworkUtils
.
getDomainAddressAsync
(
"baidu.com"
)
{
data
->
val
num
=
count
.
get
()
val
num
=
count
.
get
()
if
(
num
>=
cur
-
3
)
{
if
(
num
>=
cur
-
5
)
{
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
spanSb
=
SpanUtils
().
appendLine
(
spanSb
)
.
append
(
"getBaiduDomainAddress: $data"
)
.
append
(
"getBaiduDomainAddress: $data"
)
.
create
()
.
create
()
...
@@ -139,6 +161,8 @@ class NetworkActivity : BaseTitleActivity() {
...
@@ -139,6 +161,8 @@ class NetworkActivity : BaseTitleActivity() {
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
ipV4AddressAsyncTask
.
cancel
()
ipV6AddressAsyncTask
.
cancel
()
wifiAvailableAsyncTask
.
cancel
()
wifiAvailableAsyncTask
.
cancel
()
availableAsyncTask
.
cancel
()
availableAsyncTask
.
cancel
()
domainAddressAsyncTask
.
cancel
()
domainAddressAsyncTask
.
cancel
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录