标签:
与进程管理的区别是: 进程只是查询内存中的正在运行的应用程序
而应用管理是查询所有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; } }
标签:
原文地址:http://www.cnblogs.com/chengbao/p/5643208.html