提交 14b2d7f6 编写于 作者: B Blankj

see 02/26 log

上级 ba9dd00c
......@@ -64,6 +64,8 @@ getAppVersionName : 获取 App 版本号
getAppVersionCode : 获取 App 版本码
getAppSignature : 获取 App 签名
getAppSignatureSHA1 : 获取应用签名的的 SHA1 值
getAppInfo : 获取 App 信息
getAppsInfo : 获取所有已安装 App 信息
```
* ### 栏相关 -> [BarUtils.java][bar.java] -> [Demo][bar.demo]
......
......@@ -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
```
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册