获取系统中所有应用的方法

来源:互联网 发布:java 静态泛型变量 编辑:程序博客网 时间:2024/05/18 02:10
/** * 获取所有应用 * @return 所有应用的集合 */private List<AppInfo> queryAppInfo() {mlistAppInfo = new ArrayList<AppInfo>();PackageManager pm = this.getPackageManager();Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, 0);//调用系统排序 , 根据name排序Collections.sort(resolveInfos,new ResolveInfo.DisplayNameComparator(pm));if (mlistAppInfo != null) {mlistAppInfo.clear();for(ResolveInfo resolveInfo : resolveInfos) {String activityName = resolveInfo.activityInfo.name; // 获得该应用程序的启动Activity的nameString pkgName = resolveInfo.activityInfo.packageName; // 获得应用程序的包名String appLabel = (String)resolveInfo.loadLabel(pm);   //获取应用的名称Drawable icon = resolveInfo.loadIcon(pm); //获取应用的图标iconLog.i("ii", "========="+activityName+" ====== "+pkgName);//为应用程序的启动Activity 准备IntentIntent launchIntent = new Intent();launchIntent.setComponent(new ComponentName(pkgName,activityName));// 创建一个AppInfo对象,并赋值AppInfo appInfo = new AppInfo();appInfo.setAppLabel(appLabel);appInfo.setPkgName(pkgName);appInfo.setAppIcon(icon);appInfo.setIntent(launchIntent);mlistAppInfo.add(appInfo); // 添加至列表中}}return mlistAppInfo;}

原创粉丝点击