Files
FLYSN/app/src/main/java/com/info/sn/utils/AppsManagerUtils.java
fanhuitong 0fa06f8f2a version:1.6.1
fix:休息日管控完善
add:
2021-09-02 18:29:04 +08:00

149 lines
5.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.info.sn.utils;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import com.info.sn.bean.zuoye.LocalAppInfo;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class AppsManagerUtils {
public static AppUpdateInfo getUpAppsByPackageName(Context context, String packageName) {
PackageManager pm = context.getPackageManager();
AppUpdateInfo appInfo = new AppUpdateInfo();
try {
PackageInfo packinfo = pm.getPackageInfo(packageName, 0);
appInfo.setPackageName(packageName);
appInfo.setVersion(packinfo.versionName);
if (packinfo.versionName == null || packinfo.versionName.equals("")) {
appInfo.setVersion(packinfo.versionCode + "");
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return appInfo;
}
public static LocalAppInfo getAppsByPackageName(Context context, String packageName) {
PackageManager pm = context.getPackageManager();
List<LocalAppInfo> appInfos = new ArrayList<LocalAppInfo>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过查询获得所有ResolveInfo对象.
List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
for (ResolveInfo info : infos) {
// 不列出系统应用
String pkg = info.activityInfo.packageName;
if (pkg.equals(packageName)) {
extractedAppInfo(pm, appInfos, info);
}
}
return appInfos.get(0);
}
public static List<AppUpdateInfo> getUpadteApps(Context context) {
PackageManager pm = context.getPackageManager();
List<AppUpdateInfo> appInfos = new ArrayList<AppUpdateInfo>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过查询获得所有ResolveInfo对象.
List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
for (ResolveInfo info : infos) {
// 不列出系统应用
String pkg = info.activityInfo.packageName;
if (!isSystemApp(context, pkg)) {
PackageInfo packageInfo = null;
AppUpdateInfo appInfo = new AppUpdateInfo();
appInfo.setPackageName(info.activityInfo.packageName);
try {
packageInfo = pm.getPackageInfo(info.activityInfo.packageName, 0);
appInfo.setVersion(packageInfo.versionName);
if (packageInfo.versionName == null || packageInfo.versionName.equals("")) {
appInfo.setVersion(packageInfo.versionCode + "");
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
appInfos.add(appInfo);
}
}
return appInfos;
}
public static List<LocalAppInfo> getUserApps(Context context) {
PackageManager pm = context.getPackageManager();
List<LocalAppInfo> appInfos = new ArrayList<LocalAppInfo>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过查询获得所有ResolveInfo对象.
List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
for (ResolveInfo info : infos) {
// 不列出系统应用
String pkg = info.activityInfo.packageName;
if (!isSystemApp(context, pkg)) {
extractedAppInfo(pm, appInfos, info);
}
}
return appInfos;
}
private static void extractedAppInfo(PackageManager pm,
List<LocalAppInfo> appInfos, ResolveInfo info) {
PackageInfo packageInfo = null;
LocalAppInfo appInfo = new LocalAppInfo();
appInfo.setIcon(info.activityInfo.loadIcon(pm));
appInfo.setAppName(info.activityInfo.loadLabel(pm).toString());
appInfo.setPackageName(info.activityInfo.packageName);
try {
packageInfo = pm.getPackageInfo(info.activityInfo.packageName, 0);
appInfo.setVersion(packageInfo.versionName);
if (packageInfo.versionName == null || packageInfo.versionName.equals("")) {
appInfo.setVersion(packageInfo.versionCode + "");
}
String appInstallDir = info.activityInfo.applicationInfo.publicSourceDir;
int size = Integer.valueOf((int) new File(appInstallDir).length());
appInfo.setSize(size);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
appInfos.add(appInfo);
}
public static boolean isSystemApp(Context context, String pkg) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(pkg, 0);
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
if (pkg.equals(context.getPackageName())) {
return true;
} else {
//第三方应用
return false;
}
} else {
//系统应用
return true;
}
} catch (NameNotFoundException e) {
e.printStackTrace();
return true;
}
}
}