我的手机管家(17) 应用管理 获取安装的应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的手机管家(17) 应用管理 获取安装的应用程序相关的知识,希望对你有一定的参考价值。

与进程管理的区别是: 进程只是查询内存中的正在运行的应用程序

而应用管理是查询所有Data和Sdk卡中的应用程序

通过PackageManager 来获取已经安装了的应用程序

PackageManager    贯穿了进程管理, 缓存清除, 应用管理

AppInfo 用来存储获取的应用信息,

 

public class AppInfo {
    private Drawable icon;
    private String appName;
    private String packageName;
    private boolean isUserApp;//true:用户应用   false:系统应用
    private boolean isRom;//true:表示手机内存   false:表示SD卡内存
}

通过packageManager.getInstalledPackages(0)获取所有已经按住

了的应用信息  List<ApplicationInfo>

通过  ApplicationInfo.flags   应用程序的特征, 以及是内部存储还是sdk存储

设置AppInfo的信息

如下判断系统应用和用户应用,   以及存储的位置

 int flags=applicationInfo.flags;//应用程序的特征
            if((flags & ApplicationInfo.FLAG_SYSTEM)==ApplicationInfo.FLAG_SYSTEM){
                //系统应用
                appInfo.setUserApp(false);
            }else{
                appInfo.setUserApp(true);
            }
            //判断是内存手机存储还是外部存储
            if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)==ApplicationInfo.FLAG_EXTERNAL_STORAGE){
                //外置存储
                appInfo.setRom(false);
            }else{
                appInfo.setRom(true);
            }

 

定义一个获取已经安装的应用程序信息:

package com.chb.myphonesave.provider;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;

import com.chb.myphonesave.entity.AppInfo;
/**
 *获取已经安装的应用的信息 
 */
public class AppInfoProvider {

    public static List<AppInfo> getAppInfos(Context ct){
        List<AppInfo> list = new ArrayList<AppInfo>();
        PackageManager pm = ct.getPackageManager();
        //获取已安装的程序应用包
        List<PackageInfo> appList =pm.getInstalledPackages(0);
        for(PackageInfo info :appList){
            AppInfo appInfo=new AppInfo();
            
            //应用程序包名
            String packageName=info.packageName;
            ApplicationInfo applicationInfo = info.applicationInfo;
            //应用程序图标
            Drawable icon = applicationInfo.loadIcon(pm);
            //应用名称
            String appName=applicationInfo.loadLabel(pm).toString() + applicationInfo.uid;
            
            int flags=applicationInfo.flags;//应用程序的特征
            if((flags & ApplicationInfo.FLAG_SYSTEM)==ApplicationInfo.FLAG_SYSTEM){
                //系统应用
                appInfo.setUserApp(false);
            }else{
                appInfo.setUserApp(true);
            }
            //判断是内存手机存储还是外部存储
            if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)==ApplicationInfo.FLAG_EXTERNAL_STORAGE){
                //外置存储
                appInfo.setRom(false);
            }else{
                appInfo.setRom(true);
            }
            appInfo.setAppName(appName);
            appInfo.setIcon(icon);
            appInfo.setPackageName(packageName);
            list.add(appInfo);
        }
        return list;
    }
}

 

以上是关于我的手机管家(17) 应用管理 获取安装的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我的手机管家 进程管理布局

我的手机管家(18) 应用管理 主要代码

我的手机管家(19) 应用管理 单独介绍一下PopupWindow

我的手机管家(20) 应用管理 介绍PopupWindow中点击事件

我的手机管家 进程管理逻辑代码

我的手机管家(16) 应用管理 界面设计