1、需要的許可權:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
2、擷取所有應用:
public List<ResolveInfo> getAllPagckage(Context context){PackageManager pm = context.getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 通過查詢,獲得所有ResolveInfo對象.List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(mainIntent, PackageManager.GET_GIDS);// 調用系統排序,根據name排序Collections.sort(resolveInfoList,new ResolveInfo.DisplayNameComparator(pm));return resolveInfoList;}
3、過濾出第三方應用:
private void filterPackage(List<ResolveInfo> allPackageList){if (!allPackageList.isEmpty()){list.clear();int size = allPackageList.size();ResolveInfo resolveInfo = null;for (int i = 0; i < size; i++){resolveInfo = allPackageList.get(i);// 第三方應用if((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0){list.add(resolveInfo);}}}}
4、卸載:(註:1、兩種方式均可;2、appPackage為resolveInfo.activityInfo.packageName)
public void uninstallApp(Context context, String appPackage){Uri packageURI = Uri.parse("package:" + appPackage); //自訂卸載// Intent uninstallIntent = new Intent(Intent.ACTION_DELETE,// packageURI);//((Activity)context).startActivityForResult(uninstallIntent, 0); //調用系統內建卸載操作進行卸載Intent uninstallIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);context.startActivity(uninstallIntent);}