android launcher开发中过滤不能启动的package(app)
来源:互联网 发布:json对象转化成数组 编辑:程序博客网 时间:2024/06/04 01:34
在launcher的开发中肯定会有一个页面展示全部的app,但是android系统中安装的apk文件又不是所有的都可以直接打开(比如安装的主题包等)。所以在展示app 列表的时候肯定就涉及到一些app的过滤问题
首先 - 获取手机上所有安装的应用程序包
/** * 获取所有的安装的应用程序信息。 * @param context 上下文 * @return */ public static List<AppInfo> getAppInfos(Context context){ PackageManager pm = context.getPackageManager(); //所有的安装在系统上的应用程序包信息。 List<PackageInfo> packInfos = pm.getInstalledPackages(0); List<AppInfo> appInfos = new ArrayList<AppInfo>(); for(PackageInfo packInfo : packInfos){ boolean notActiveApp = NotActiveApp(context, packInfo.packageName); if (notActiveApp) continue; AppInfo appInfo = new AppInfo(); //packInfo 相当于一个应用程序apk包的清单文件 String packname = packInfo.packageName; Drawable icon = packInfo.applicationInfo.loadIcon(pm); String name = packInfo.applicationInfo.loadLabel(pm).toString(); //应用程序信息的标记 相当于用户提交的答卷 int flags = packInfo.applicationInfo.flags; //操作系统分配给应用系统的一个固定的编号。一旦应用程序被装到手机 id就固定不变了。 int uid = packInfo.applicationInfo.uid; appInfo.setUid(uid); if((flags& ApplicationInfo.FLAG_SYSTEM)==0){//用户程序 appInfo.setUserApp(true); }else{//系统程序 appInfo.setUserApp(false); } if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)==0){//手机的内存 appInfo.setInRom(true); }else{//手机外存储设备 appInfo.setInRom(false); } appInfo.setPackname(packname); appInfo.setIcon(icon); appInfo.setName(name); appInfos.add(appInfo); } return appInfos; }
这里用到了PackageMannager包管理类,调用getInstalledPackages(0)获取到了手机中所有的已安装的包集合
ApplicationInfo.FLAG_SYSTEM用来判别当前包是不是系统应用
过滤 - 过滤不能启动的类
app的启动可以通过Intent来启动,判断app能否直接启动用以下方法
/** * 判断app能不能主动启动 否就隐藏 * */ public static boolean NotActiveApp(Context context, String packageName){ Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); if (intent == null) return true; return false; }
阅读全文
0 0
- android launcher开发中过滤不能启动的package(app)
- Android launcher 源码 app 的启动方式
- android开发之Launcher icon(启动图标)的设计
- android launcher开发(7) 启动应用
- android launcher启动及开发
- Android launcher 开发笔记(二) launcher中常用的类
- Android launcher 初体验--app开机启动
- android launcher开发(5) Launcher的显示
- android launcher开发(9)Launcher的窗口周期
- Android launcher 开发笔记(三) 启动过程分析
- Android的Launcher成为系统中第一个启动的,也是唯一的Launcher
- 2011.8.19(android中launcher启动过程中对widget做的一些操作)
- android手把手教你开发launcher(三)——启动安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- 开发Launcher不能debug
- android 让自己的app成为launcher
- Android APP设置为Launcher时onCreate启动两次
- Error和Exception的区别
- 如何用命令将本地项目上传到git
- 日语N2听力常用词汇
- 理解Linux系统/etc/init.d目录和/etc/rc.local脚本
- 广告滚动
- android launcher开发中过滤不能启动的package(app)
- Android CoordinatorLayout与NestedScrollView基于Behavior几行代码实现底部View滑入滑出
- The Suspects
- 线程池及适用场合
- 每个程序员都会的 35 个 jQuery 小技巧
- redis
- 【原创】【有趣无用】一句话算法
- 算法学习之旅,初级篇(18)--哥德巴赫猜想
- 微信备忘录