Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
14b2d7f6
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,体验更适合开发者的 AI 搜索 >>
提交
14b2d7f6
编写于
2月 26, 2018
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 02/26 log
上级
ba9dd00c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
171 addition
and
1 deletion
+171
-1
utilcode/README-CN.md
utilcode/README-CN.md
+2
-0
utilcode/README.md
utilcode/README.md
+2
-1
utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
...code/src/main/java/com/blankj/utilcode/util/AppUtils.java
+167
-0
未找到文件。
utilcode/README-CN.md
浏览文件 @
14b2d7f6
...
...
@@ -64,6 +64,8 @@ getAppVersionName : 获取 App 版本号
getAppVersionCode : 获取 App 版本码
getAppSignature : 获取 App 签名
getAppSignatureSHA1 : 获取应用签名的的 SHA1 值
getAppInfo : 获取 App 信息
getAppsInfo : 获取所有已安装 App 信息
```
*
### 栏相关 ->
[
BarUtils.java
][
bar.java
]
->
[
Demo
][
bar.demo
]
...
...
utilcode/README.md
浏览文件 @
14b2d7f6
...
...
@@ -64,6 +64,8 @@ getAppVersionName
getAppVersionCode
getAppSignature
getAppSignatureSHA1
getAppInfo
getAppsInfo
```
*
### About Bar ->
[
BarUtils.java
][
bar.java
]
->
[
Demo
][
bar.demo
]
...
...
@@ -170,7 +172,6 @@ urlDecode
base64Encode
base64Encode2String
base64Decode
base64UrlSafeEncode
htmlEncode
htmlDecode
```
...
...
utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
浏览文件 @
14b2d7f6
...
...
@@ -17,6 +17,7 @@ import android.util.Log;
import
java.io.File
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -578,6 +579,80 @@ public final class AppUtils {
replaceAll
(
"(?<=[0-9A-F]{2})[0-9A-F]{2}"
,
":$0"
);
}
/**
* Return the application's information.
* <ul>
* <li>name of package</li>
* <li>icon</li>
* <li>name</li>
* <li>path of package</li>
* <li>version name</li>
* <li>version code</li>
* <li>is system</li>
* </ul>
*
* @return the application's information
*/
public
static
AppInfo
getAppInfo
()
{
return
getAppInfo
(
Utils
.
getApp
().
getPackageName
());
}
/**
* Return the application's information.
* <ul>
* <li>name of package</li>
* <li>icon</li>
* <li>name</li>
* <li>path of package</li>
* <li>version name</li>
* <li>version code</li>
* <li>is system</li>
* </ul>
*
* @param packageName The name of the package.
* @return 当前应用的 AppInfo
*/
public
static
AppInfo
getAppInfo
(
final
String
packageName
)
{
try
{
PackageManager
pm
=
Utils
.
getApp
().
getPackageManager
();
PackageInfo
pi
=
pm
.
getPackageInfo
(
packageName
,
0
);
return
getBean
(
pm
,
pi
);
}
catch
(
PackageManager
.
NameNotFoundException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* Return the applications' information.
*
* @return the applications' information
*/
public
static
List
<
AppInfo
>
getAppsInfo
()
{
List
<
AppInfo
>
list
=
new
ArrayList
<>();
PackageManager
pm
=
Utils
.
getApp
().
getPackageManager
();
List
<
PackageInfo
>
installedPackages
=
pm
.
getInstalledPackages
(
0
);
for
(
PackageInfo
pi
:
installedPackages
)
{
AppInfo
ai
=
getBean
(
pm
,
pi
);
if
(
ai
==
null
)
continue
;
list
.
add
(
ai
);
}
return
list
;
}
private
static
AppInfo
getBean
(
final
PackageManager
pm
,
final
PackageInfo
pi
)
{
if
(
pm
==
null
||
pi
==
null
)
return
null
;
ApplicationInfo
ai
=
pi
.
applicationInfo
;
String
packageName
=
pi
.
packageName
;
String
name
=
ai
.
loadLabel
(
pm
).
toString
();
Drawable
icon
=
ai
.
loadIcon
(
pm
);
String
packagePath
=
ai
.
sourceDir
;
String
versionName
=
pi
.
versionName
;
int
versionCode
=
pi
.
versionCode
;
boolean
isSystem
=
(
ApplicationInfo
.
FLAG_SYSTEM
&
ai
.
flags
)
!=
0
;
return
new
AppInfo
(
packageName
,
name
,
icon
,
packagePath
,
versionName
,
versionCode
,
isSystem
);
}
private
static
boolean
isFileExists
(
final
File
file
)
{
return
file
!=
null
&&
file
.
exists
();
}
...
...
@@ -638,4 +713,96 @@ public final class AppUtils {
}
return
new
String
(
ret
);
}
/**
* The application's information.
*/
public
static
class
AppInfo
{
private
String
packageName
;
private
String
name
;
private
Drawable
icon
;
private
String
packagePath
;
private
String
versionName
;
private
int
versionCode
;
private
boolean
isSystem
;
public
Drawable
getIcon
()
{
return
icon
;
}
public
void
setIcon
(
final
Drawable
icon
)
{
this
.
icon
=
icon
;
}
public
boolean
isSystem
()
{
return
isSystem
;
}
public
void
setSystem
(
final
boolean
isSystem
)
{
this
.
isSystem
=
isSystem
;
}
public
String
getPackageName
()
{
return
packageName
;
}
public
void
setPackageName
(
final
String
packageName
)
{
this
.
packageName
=
packageName
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
final
String
name
)
{
this
.
name
=
name
;
}
public
String
getPackagePath
()
{
return
packagePath
;
}
public
void
setPackagePath
(
final
String
packagePath
)
{
this
.
packagePath
=
packagePath
;
}
public
int
getVersionCode
()
{
return
versionCode
;
}
public
void
setVersionCode
(
final
int
versionCode
)
{
this
.
versionCode
=
versionCode
;
}
public
String
getVersionName
()
{
return
versionName
;
}
public
void
setVersionName
(
final
String
versionName
)
{
this
.
versionName
=
versionName
;
}
public
AppInfo
(
String
packageName
,
String
name
,
Drawable
icon
,
String
packagePath
,
String
versionName
,
int
versionCode
,
boolean
isSystem
)
{
this
.
setName
(
name
);
this
.
setIcon
(
icon
);
this
.
setPackageName
(
packageName
);
this
.
setPackagePath
(
packagePath
);
this
.
setVersionName
(
versionName
);
this
.
setVersionCode
(
versionCode
);
this
.
setSystem
(
isSystem
);
}
@Override
public
String
toString
()
{
return
"pkg name: "
+
getPackageName
()
+
"\napp icon: "
+
getIcon
()
+
"\napp name: "
+
getName
()
+
"\napp path: "
+
getPackagePath
()
+
"\napp v name: "
+
getVersionName
()
+
"\napp v code: "
+
getVersionCode
()
+
"\nis system: "
+
isSystem
();
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录