Android---获取应用程序列表

android中获得应用程序列表很简单,主要使用PackageManager就可以!

public class ScreenApp {
    String name;
    String packName;
    Drawable icon;
}

例如:如何获得第三方应用程序列表,即已经安装的应用程序列表,可以这样做:

PackageManager pm = mContext.getPackageManager();
List<PackageInfo> 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<PackageInfo> 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();

到此获得不同应用程序列表的功能就完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值