- 浏览: 433484 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
获取Launcher 启动列表
即 列出所有Launcher程序 通过PackageManager 来获取
[代码 步骤]
1. 定义内部类 LauncherItem 用于定义Application相关属性 比如:图标 名称 以及 ComponentName
public class LauncherItem { Drawable icon; String name; ComponentName component; LauncherItem(Drawable d, String s,ComponentName cn){ icon = d; name = s; component = cn; } };
2. 定义List<LauncherItem> lvalue 用于存放查询结果
public void addLauncher(){ lvalue = new ArrayList<LauncherItem>(); pkgMgt = this.getPackageManager(); //to query all launcher & load into List<> Intent it = new Intent(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> ra =pkgMgt.queryIntentActivities(it,0); for(int i=0;i<ra.size();i++){ ActivityInfo ai = ra.get(i).activityInfo; //String ainfo = ai.toString(); Drawable icon = ai.loadIcon(pkgMgt); String label = ai.loadLabel(pkgMgt).toString(); ComponentName c = new ComponentName(ai.applicationInfo.packageName,ai.name); LauncherItem item = new LauncherItem(icon,label,c); lvalue.add(item); } }
3. 定义LauncherAdapter 并指定各个item显示样式
public class LauncherAdapter extends BaseAdapter { Activity activity; public LauncherAdapter(Activity a){ activity = a; } @Override public int getCount() { // TODO Auto-generated method stub return lvalue.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub return composeItem(position); } public View composeItem(int position){ LinearLayout layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.HORIZONTAL); ImageView iv = new ImageView(activity); iv.setImageDrawable(lvalue.get(position).icon); layout.addView(iv); TextView tv = new TextView(activity); tv.setText(lvalue.get(position).name); tv.setPadding(10, 5, 0, 0); layout.addView(tv); return layout; } }
4. 启动某个item 当单击时
adapter = new LauncherAdapter(this); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Intent intent =new Intent(Intent.ACTION_VIEW); intent.setComponent(lvalue.get(arg2).component); startActivity(intent); } });
5. emulator 结果结果
- 列出所有application
- 单击Alarm Clock 的情形:
有问题请跟帖 否则 请顶贴 谢谢!
评论
10 楼
haoluziqi
2011-06-15
不错,学习了。。。
9 楼
feifei694893239
2011-04-26
学习了,感谢分享
8 楼
surefan
2011-04-18
有个很好的方法可以试试,2.0以后才有的 ^_^
PackageManager pm;
Intent intent = pm.getLaunchIntentForPackage(packageName);
PackageManager pm;
Intent intent = pm.getLaunchIntentForPackage(packageName);
7 楼
greenboy1
2011-04-18
呵呵 真不错哈
6 楼
bydwmq
2010-11-21
有什么办法可能拿到刚刚下载安装的应用程序(apk)的基本信息吗?比如AppName,icon,并放入指定的listView里面
5 楼
leizhangmmmooo
2010-11-17
楼主可否把源码发给我看看 hbsz_zl_love@126.com 谢谢了
4 楼
1927105
2010-09-01
有点像进程管家,是吧?
3 楼
terryno2
2010-08-21
跟楼主请教个菜鸟问题。
我想查看下PackageManager 的queryIntentActivities方法是怎样实现的,但发现PackageManager 是抽象类,queryIntentActivities是抽象方法,获得PackageManager实例的getPackageManager方法,是ContextWrapper的方法,但在ContextWrapper中没有发现有setPackageManager或createPackageManager之类的方法,那我怎样才能找到PackageManager 的实现类呢
我想查看下PackageManager 的queryIntentActivities方法是怎样实现的,但发现PackageManager 是抽象类,queryIntentActivities是抽象方法,获得PackageManager实例的getPackageManager方法,是ContextWrapper的方法,但在ContextWrapper中没有发现有setPackageManager或createPackageManager之类的方法,那我怎样才能找到PackageManager 的实现类呢
2 楼
winddu
2010-06-22
先感谢楼主,但我没有调通过这些代码,请楼主再把代码打包放出来好吗?
1 楼
zhs2472
2010-06-22
不错 学习了
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2608Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5923ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3169MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19013CheckBox在ListView 而导致其OnItemCli ... -
PreferenceActivity 全接触
2010-06-19 12:53 9438PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5955Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14442SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1449Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2221流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3224NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1220自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3157模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2469TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3982View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1837Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1733*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1521我们知道Android 默认是不支持*.gif 的 但是 ... -
shortcut+livefolder
2010-04-19 13:08 1493shortcut+livefolder Live ...
相关推荐
Android 系统从 SystemServer 开始的 Launcher 启动详细流程 Android 系统启动流程是一个复杂的过程,从 SystemServer 开始到 Launcher 的启动涉及到多个组件和服务的协作。本文将详细介绍 Android 系统从 ...
### android系统从systemserver开始的launcher启动详细流程 #### 概述: 在Android系统的启动过程中,用户首次交互的界面往往是Launcher应用,它作为系统主屏幕的主要组成部分,承载着展示应用程序图标、提供快捷...
Launcher会获取系统的桌面组件管理器,并启动桌面组件的host。这个过程涉及到与系统的深度集成,确保Launcher能够正确地显示和管理桌面组件。 **5. 加载所有的hotseats(热键):** Launcher会从资源文件`array....
文件名称列表包含了多个不同的主题,如Android SDK和Eclipse的环境搭建、获取Launcher启动列表,以及一个HTML文件"明细demo.html",这可能是一个简单的前端界面,用于展示JSON转换的效果。还有"tab.html"可能是用来...
在提供的`用LauncherActivity开发启动Activity的列表`压缩包文件中,很可能包含了实现`LauncherActivity`的源代码和资源文件。通过查看和分析这些文件,我们可以学习如何设置`LauncherActivity`的布局、事件监听器,...
在Android系统中,主启动器(Launcher)是用户与设备交互的核心组件,它负责展示应用图标、快捷方式以及壁纸等,使用户能够启动各种应用程序。然而,Android平台的开放性允许开发者创建次级启动器(Secondary ...
- **源代码分析**:Launcher3的源代码是开源的,开发者可以从GitHub上的"Launcher3-master"项目获取,通过阅读和理解源码,可以深入学习Android启动器的实现细节。 - **调试工具**:使用Android Studio的调试...
`DevicePolicyManager`和`PackageManager`服务用于获取系统级别的信息,如应用列表、权限等。`Loader`机制确保了数据在后台异步加载,同时在数据变更时自动刷新UI。 6. **个性化和设置** `SharedPreferences`用于...
这样配置之后,当设备启动完成并进入“systemready”状态时,ActivityManager会发送一个特定的Intent,Launcher就可以根据这些配置信息启动并成为用户的默认Home屏幕。 #### 三、Launcher的UI结构与组件 Launcher...
"launcher获取应用"这个主题主要涉及到如何在Android环境中开发或定制一个能够检索并显示手机上所有应用或特定应用的启动器。 首先,我们需要了解Android的四大组件:Activity、Service、BroadcastReceiver和...
这一部分涵盖了Launcher启动的过程和关键初始化步骤。 1、Launcher进程启动过程 当用户按下桌面应用图标时,系统会启动一个新的进程用于运行Launcher应用。这个过程中,系统会加载必要的资源和组件,准备启动界面。...
由于Launcher涉及用户的应用启动,因此对权限的管理尤为重要。在源码中,可以看到对Intent的验证,防止恶意应用的启动,以及对敏感操作的权限检查。 8. **性能优化** 在源码中,Android团队进行了大量性能优化,...
7. **权限管理**:自定义启动器可能需要获取读取应用列表、修改系统设置等权限,开发者需要合理请求并管理这些权限。 8. **个性化设置**:为了提升用户体验,自定义启动器往往提供多种定制选项,如主题更换、图标...
用户可以通过Launcher启动其他应用程序,设置桌面壁纸,以及管理手机上的应用。 当我们谈论基于Android Studio(简称AS)的Launcher源码调试时,这意味着我们将使用Google提供的强大集成开发环境(IDE)来分析和...
2. 工作流程:当用户启动Launcher2时,首先会加载`LauncherActivity`,它是整个启动器的入口。接着,`Workspace`负责加载和管理桌面的页面和图标,`LauncherModel`则负责从系统服务中获取应用信息,并更新到界面上。...
- **权限声明**:Launcher通常需要访问系统信息,例如获取安装的应用列表,因此需要声明相应的权限。 - **组件声明**:包括Activity、Service、BroadcastReceiver等。 2. **应用程序组件**: - **Activity**:...
3. **ApplicationsLoader**: 该线程负责获取系统中安装的应用列表,供 AllAppsGridView 使用。 **Launcher 启动过程** - Launcher 的启动涉及 Android 系统服务的初始化,包括 ActivityManagerService 和 ...
1. **获取源码**:首先,从官方仓库或指定的资源位置下载Launcher3的源代码。在这个案例中,源码可能来自`Launcher3_mx-master`压缩包。 2. **创建新项目**:在Android Studio中,选择“New > Project”,然后选择...
通过研究5.0 Launcher3的源码,开发者不仅可以了解Android桌面启动器的工作原理,还能学习到Android UI设计、数据存储、手势识别等多个方面的知识,为开发自己的定制启动器或进行系统级优化提供坚实的基础。...
"安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...