码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-07-05 13:56:23      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

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

而应用管理是查询所有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) 应用管理 获取安装的应用程序

标签:

原文地址:http://www.cnblogs.com/chengbao/p/5643208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!