version:1.5

fix:
update:增加天气预报详情,增加系统应用模块
This commit is contained in:
2022-01-22 11:53:16 +08:00
parent be302d67e2
commit 2e9b26b100
243 changed files with 1724 additions and 238 deletions

View File

@@ -29,9 +29,71 @@ public class APKUtils {
this.add("com.sprd.sprdnote");
this.add("com.android.deskclock");
this.add("com.alldocube.store");
this.add("com.android.uiuios");
}};
private static HashSet<String> showPackageName = new HashSet<String>() {{
this.add("com.android.dialer");
this.add("com.android.gallery3d");
this.add("com.android.settings");
this.add("com.android.messaging");
this.add("com.android.camera2");
}};
private static String TAG = APKUtils.class.getSimpleName();
public static ArrayList<ApplicationInfo> getSystemApp(Context context) {
PackageManager pm = context.getPackageManager();
// 查询所有已经安装的应用程序
List<ApplicationInfo> appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除但还有安装目录的
ArrayList<ApplicationInfo> applicationInfos = new ArrayList<>();
// 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
List<ResolveInfo> resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
Set<String> allowPackages = new HashSet();
for (ResolveInfo resolveInfo : resolveinfoList) {
Log.i(TAG, "queryFilterAppInfo: " + resolveInfo.activityInfo.packageName);
allowPackages.add(resolveInfo.activityInfo.packageName);
}
for (ApplicationInfo app : appInfos) {
if ((app.flags & ApplicationInfo.FLAG_SYSTEM) > 0)//通过flag排除系统应用会将电话、短信也排除掉
{
if (allowPackages.contains(app.packageName) && !showPackageName.contains(app.packageName)) {
applicationInfos.add(app);
}
} else {
// if(app.uid > 10000){//通过uid排除系统应用在一些手机上效果不好
// applicationInfos.add(app);
// }
// if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) {
//// if (allowPackages.contains(app.packageName)) {
// applicationInfos.add(app);
// }
}
}
applicationInfos.sort(new Comparator<ApplicationInfo>() {
@Override
public int compare(ApplicationInfo o1, ApplicationInfo o2) {
return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(), o2.loadLabel(pm).toString());
// return o1.loadLabel(pm).toString().compareTo(o2.loadLabel(pm).toString());
}
});
applicationInfos.sort(new Comparator<ApplicationInfo>() {
@Override
public int compare(ApplicationInfo o1, ApplicationInfo o2) {
if ((o1.flags & ApplicationInfo.FLAG_SYSTEM) <= (o2.flags & ApplicationInfo.FLAG_SYSTEM)) {
return 1;
} else {
return -1;
}
}
});
return applicationInfos;
}
public static ArrayList<ApplicationInfo> queryFilterAppInfo(Context context) {
PackageManager pm = context.getPackageManager();
@@ -52,22 +114,25 @@ public class APKUtils {
}
for (ApplicationInfo app : appInfos) {
// if((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)//通过flag排除系统应用会将电话、短信也排除掉
// {
// applicationInfos.add(app);
// }
if ((app.flags & ApplicationInfo.FLAG_SYSTEM) > 0)//通过flag排除系统应用会将电话、短信也排除掉
{
if (showPackageName.contains(app.packageName)) {
applicationInfos.add(app);
}
} else {
// if(app.uid > 10000){//通过uid排除系统应用在一些手机上效果不好
// applicationInfos.add(app);
// }
if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) {
if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) {
// if (allowPackages.contains(app.packageName)) {
applicationInfos.add(app);
applicationInfos.add(app);
}
}
}
applicationInfos.sort(new Comparator<ApplicationInfo>() {
@Override
public int compare(ApplicationInfo o1, ApplicationInfo o2) {
return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(),o2.loadLabel(pm).toString());
return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(), o2.loadLabel(pm).toString());
// return o1.loadLabel(pm).toString().compareTo(o2.loadLabel(pm).toString());
}
});