This commit is contained in:
2019-12-25 11:28:10 +08:00
commit cdd3d43ae3
87 changed files with 16373 additions and 0 deletions

View File

@@ -0,0 +1,146 @@
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 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;
}
}
}