android获取应用列表
2016-02-16 15:28
537 查看
android中获得应用程序列表很简单,主要使用PackageManager就可以。
例如:如何获得第三方应用程序列表,即已经安装的应用程序列表,可以这样做:
PackageManager pm = mContext.getPackageManager();
List mPacks = pm.getInstalledPackages(0);
for(PackageInfo info : mPacks){
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.applicationInfo.loadIcon(pm));
mInfo.setName(info.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(info.packageName);
mInfos.add(mInfo);
}
例如:获取系统所有的应用,即系统应用+已安装的应用
PackageManager pm = mContext.getPackageManager();
List mPacks = pm.getInstalledPackages(0);
for(PackageInfo info : mPacks){
if((info.applicationInfo.flags
& ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0){
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.applicationInfo.loadIcon(pm));
mInfo.setName(info.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(info.packageName);
mInfos.add(mInfo);
}
}
在第二个例子中出现了很多无法点击启动的图标,这些应用本身不是一个独立的应用,那么如何获得只包含可启动的应用列表呢?这个也不难,看下面的例子:
PackageManager pm = mContext.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List mResolveInfo =
pm.queryIntentActivities(mainIntent, 0);
for(ResolveInfo
info : mResolveInfo){
String
packName = info.activityInfo.packageName;
if(packName.equals(mContext.getPackageName())){
continue;
}
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.activityInfo.applicationInfo.loadIcon(pm));
mInfo.setName(info.activityInfo.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(packName);
mInfos.add(mInfo);
}
关于获得正在运行的应用列表,看下面的例子:
ActivityManager am = (ActivityManager) getBaseApplication().getSystemService(Context.ACTIVITY_SERVICE);
List mAppProcessInfos = am.getRunningAppProcesses();
接下来的操作同上。
到此获得不同应用程序列表的功能就完成了。
例如:如何获得第三方应用程序列表,即已经安装的应用程序列表,可以这样做:
PackageManager pm = mContext.getPackageManager();
List mPacks = pm.getInstalledPackages(0);
for(PackageInfo info : mPacks){
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.applicationInfo.loadIcon(pm));
mInfo.setName(info.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(info.packageName);
mInfos.add(mInfo);
}
例如:获取系统所有的应用,即系统应用+已安装的应用
PackageManager pm = mContext.getPackageManager();
List mPacks = pm.getInstalledPackages(0);
for(PackageInfo info : mPacks){
if((info.applicationInfo.flags
& ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0){
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.applicationInfo.loadIcon(pm));
mInfo.setName(info.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(info.packageName);
mInfos.add(mInfo);
}
}
在第二个例子中出现了很多无法点击启动的图标,这些应用本身不是一个独立的应用,那么如何获得只包含可启动的应用列表呢?这个也不难,看下面的例子:
PackageManager pm = mContext.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List mResolveInfo =
pm.queryIntentActivities(mainIntent, 0);
for(ResolveInfo
info : mResolveInfo){
String
packName = info.activityInfo.packageName;
if(packName.equals(mContext.getPackageName())){
continue;
}
ScreenApp
mInfo = new ScreenApp();
mInfo.setIcon(info.activityInfo.applicationInfo.loadIcon(pm));
mInfo.setName(info.activityInfo.applicationInfo.loadLabel(pm).toString());
mInfo.setPackageName(packName);
mInfos.add(mInfo);
}
关于获得正在运行的应用列表,看下面的例子:
ActivityManager am = (ActivityManager) getBaseApplication().getSystemService(Context.ACTIVITY_SERVICE);
List mAppProcessInfos = am.getRunningAppProcesses();
接下来的操作同上。
到此获得不同应用程序列表的功能就完成了。
相关文章推荐
- 【转】Android小技巧持续更新
- android中画虚线--.PathEffect类简单认识
- Android四大组件之Activity
- Android开发中一些被冷落但却很有用的类和方法
- Android_自定义HorizontalScrollView实现滑动子控件大小伸缩
- Android Studio 常用快捷键
- Android之TypedArray 为什么需要调用recycle()
- android使用NDK编译curl库
- Android 如何判断CPU是32位还是64位
- Android Activity 生命周期
- Android:储存方式之SharePreferences
- Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.int
- Android中自定义控件
- Android Socket实例(2)
- Android NDK开发<一>:第一个demo
- Android51--电源管理之省电模式分析
- Android 谷歌官方Gson解析和阿里巴巴fastJson解析
- 1. Android源代码下载编译
- 试用android studio
- Android图片圆角 用简单的方法实现