`
gryphone
  • 浏览: 433484 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

获取Launcher 启动列表

阅读更多

获取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);
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 的实现类呢
2 楼 winddu 2010-06-22  
先感谢楼主,但我没有调通过这些代码,请楼主再把代码打包放出来好吗?
1 楼 zhs2472 2010-06-22  
不错  学习了

相关推荐

    android系统从systemserver开始的launcher启动详细流程.doc

    Android 系统从 SystemServer 开始的 Launcher 启动详细流程 Android 系统启动流程是一个复杂的过程,从 SystemServer 开始到 Launcher 的启动涉及到多个组件和服务的协作。本文将详细介绍 Android 系统从 ...

    android系统从systemserver开始的launcher启动详细流程

    ### android系统从systemserver开始的launcher启动详细流程 #### 概述: 在Android系统的启动过程中,用户首次交互的界面往往是Launcher应用,它作为系统主屏幕的主要组成部分,承载着展示应用程序图标、提供快捷...

    Android 启动Launcher

    Launcher会获取系统的桌面组件管理器,并启动桌面组件的host。这个过程涉及到与系统的深度集成,确保Launcher能够正确地显示和管理桌面组件。 **5. 加载所有的hotseats(热键):** Launcher会从资源文件`array....

    json转换工具

    文件名称列表包含了多个不同的主题,如Android SDK和Eclipse的环境搭建、获取Launcher启动列表,以及一个HTML文件"明细demo.html",这可能是一个简单的前端界面,用于展示JSON转换的效果。还有"tab.html"可能是用来...

    LauncherActivity 开发启动Activity的界面

    在提供的`用LauncherActivity开发启动Activity的列表`压缩包文件中,很可能包含了实现`LauncherActivity`的源代码和资源文件。通过查看和分析这些文件,我们可以学习如何设置`LauncherActivity`的布局、事件监听器,...

    Android SecondayLauncher 桌面模式launcher sample

    在Android系统中,主启动器(Launcher)是用户与设备交互的核心组件,它负责展示应用图标、快捷方式以及壁纸等,使用户能够启动各种应用程序。然而,Android平台的开放性允许开发者创建次级启动器(Secondary ...

    Android11 Launcher3

    - **源代码分析**:Launcher3的源代码是开源的,开发者可以从GitHub上的"Launcher3-master"项目获取,通过阅读和理解源码,可以深入学习Android启动器的实现细节。 - **调试工具**:使用Android Studio的调试...

    Android Launcher3源码

    `DevicePolicyManager`和`PackageManager`服务用于获取系统级别的信息,如应用列表、权限等。`Loader`机制确保了数据在后台异步加载,同时在数据变更时自动刷新UI。 6. **个性化和设置** `SharedPreferences`用于...

    Android launcher应用讲解

    这样配置之后,当设备启动完成并进入“systemready”状态时,ActivityManager会发送一个特定的Intent,Launcher就可以根据这些配置信息启动并成为用户的默认Home屏幕。 #### 三、Launcher的UI结构与组件 Launcher...

    launcher 获取应用

    "launcher获取应用"这个主题主要涉及到如何在Android环境中开发或定制一个能够检索并显示手机上所有应用或特定应用的启动器。 首先,我们需要了解Android的四大组件:Activity、Service、BroadcastReceiver和...

    Android_launcher源码全面分析

    这一部分涵盖了Launcher启动的过程和关键初始化步骤。 1、Launcher进程启动过程 当用户按下桌面应用图标时,系统会启动一个新的进程用于运行Launcher应用。这个过程中,系统会加载必要的资源和组件,准备启动界面。...

    android Launcher2.2源码

    由于Launcher涉及用户的应用启动,因此对权限的管理尤为重要。在源码中,可以看到对Intent的验证,防止恶意应用的启动,以及对敏感操作的权限检查。 8. **性能优化** 在源码中,Android团队进行了大量性能优化,...

    android 自定义 模仿Launcher

    7. **权限管理**:自定义启动器可能需要获取读取应用列表、修改系统设置等权限,开发者需要合理请求并管理这些权限。 8. **个性化设置**:为了提升用户体验,自定义启动器往往提供多种定制选项,如主题更换、图标...

    Launcher.rar基于AS

    用户可以通过Launcher启动其他应用程序,设置桌面壁纸,以及管理手机上的应用。 当我们谈论基于Android Studio(简称AS)的Launcher源码调试时,这意味着我们将使用Google提供的强大集成开发环境(IDE)来分析和...

    android4.0 Launcher2

    2. 工作流程:当用户启动Launcher2时,首先会加载`LauncherActivity`,它是整个启动器的入口。接着,`Workspace`负责加载和管理桌面的页面和图标,`LauncherModel`则负责从系统服务中获取应用信息,并更新到界面上。...

    androidlauncher应用开发完整清晰版

    - **权限声明**:Launcher通常需要访问系统信息,例如获取安装的应用列表,因此需要声明相应的权限。 - **组件声明**:包括Activity、Service、BroadcastReceiver等。 2. **应用程序组件**: - **Activity**:...

    android2.3 launcher分析三

    3. **ApplicationsLoader**: 该线程负责获取系统中安装的应用列表,供 AllAppsGridView 使用。 **Launcher 启动过程** - Launcher 的启动涉及 Android 系统服务的初始化,包括 ActivityManagerService 和 ...

    官方Launcher3可以在Android Studio上编译

    1. **获取源码**:首先,从官方仓库或指定的资源位置下载Launcher3的源代码。在这个案例中,源码可能来自`Launcher3_mx-master`压缩包。 2. **创建新项目**:在Android Studio中,选择“New &gt; Project”,然后选择...

    5.0 Launcher3源码

    通过研究5.0 Launcher3的源码,开发者不仅可以了解Android桌面启动器的工作原理,还能学习到Android UI设计、数据存储、手势识别等多个方面的知识,为开发自己的定制启动器或进行系统级优化提供坚实的基础。...

    安卓Android源码——Android Launcher 源码修改可编译.zip

    "安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...

Global site tag (gtag.js) - Google Analytics