手机通常冷冻应用就是使用禁用接口所以直接判断应用是否被禁用即可
/**
* 获取手机应用程序
* @return
*/
private List<LauncherActivityInfo> getAllApps() {
//获取用户列表
List<UserHandle> userHandles = UserManagerCompat.getInstance(mLauncher).getUserProfiles();
List allApps = new ArrayList<>();
//遍历userHandles
for (UserHandle userHandle : userHandles) {
//获取用户下应用程序列表
allApps.addAll(LauncherAppsCompat.getInstance(mLauncher).getActivityList(null, userHandle));
}
}
return allApps;
}
/**
*获取被禁或冷冻应用列表
*
*/
public List getDisabledAppList(Context context) {
PackageManager packageManager = context.getPackageManager();
//获取到所有的安装包
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
ArrayList<String> list = new ArrayList<>();
for (PackageInfo installedPackage : installedPackages) {
String packageName = installedPackage.packageName;
//判断应用是否被禁用
if(context.getLauncher(mLauncher).isAppDisabled(packageName)){
ComponentName componentName = ComponentName.createRelative(installedPackage.packageName,installedPackage.applicationInfo.className);
String appName =
getApplicationNameByPackageName(context,installedPackage.packageName);
Drawable appIcon =getAppIconByPackageName(context,installedPackage.packageName);
Intent intent = new Intent();
intent.setComponent(componentName);
//没有图标应用
if(appIcon != null) {
AppInfo myapp = new AppInfo();
myapp.setAppLable(appName);
myapp.setAppIcon(appIcon);
myapp.setIntent(intent);
myapp.setComponentName(componentName);
allAppsInfo.add(myapp);
}
}
}
return list;
}
/**
* 通过包名获取应用名
* @param context
* @param packageName
* @return
*/
public static String getApplicationNameByPackageName(Context context, String packageName) {
PackageManager pm = context.getPackageManager();
String Name;
try {
Name = pm.getApplicationLabel(pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA)).toString();
} catch (PackageManager.NameNotFoundException e) {
Name = "";
}
return Name;
}
/**
* description 通过包名获取应用图标
* @param ApkTempPackageName
* @return
*/
public static Drawable getAppIconByPackageName(Context context , String ApkTempPackageName){
Drawable drawable = null;
try{
drawable = context.getPackageManager().getApplicationIcon(ApkTempPackageName);
}
catch (PackageManager.NameNotFoundException e){
e.printStackTrace();
}
return drawable;
}
public class AppInfo{
private String appLable;
private Drawable appIcon;
private Intent intent;
private ComponentName componentName;
private AppInfo(){
}
private String getAppLable(){
return appLable;
}
private void setAppLable(String appLable) {
this.appLable = appLable;
}
private Drawable getAppIcon(){
return appIcon;
}
private ComponentName getComponentName() {
return componentName;
}
private void setAppIcon(Drawable appIcon) {
this.appIcon = appIcon;
}
public Intent getIntent(){
return intent;
}
private void setIntent(Intent intent) {
this.intent = intent;
}
private void setComponentName(ComponentName componentName) {
this.componentName = componentName;
}
}