Android中实现Launcher功能之添加快捷方式

前言: 最近一直在看Launcher模块,经过差不多两个月学习,终于摸透了Launcher的一些主要功能实现,目前继续还处于

摸索状态。未看Launcher时,于我而言,只能膜拜,以为所有功能都是它实现的 ;入门后,才发现,Launcher的很多功能只是

集成了框架/应用程序提供的功能。很多陌生的东西,只有接触了才感叹:“oh ,原来是这样的!”

今天先给大家分享下Launcher如何实现添加快捷方式(Shortcut) ,后续会慢慢增加其他方面的功能,帮助大家“一叶而知秋”。

本文相关工程源码下载

具体下载目录在 /2012年资料/1月/9日/Android中实现Launcher功能之添加快捷方式/

具体来说,Launcher中的快捷方式有两种类型:

1 、"伪"快捷方式 —— 应用程序类型

2 、"真"快捷方式 —— Activity具备<action/>为ACTION_CREATE_SHORTCUT的配置信息

这两种类型的快捷方式是怎么勾搭在一起的,在下面大家通过代码自己理解,也不方便细说了。

关于如何创建一个”真”快捷方式(Shortcut)的App ,大家可以先去看看杨丰盛老师的博客《Android特色开发之桌面组件》 ,

从中我们可以掌握如何创建一个快捷方式,实现也不是很难。

知识点介绍:

知识点一 、ACTION_PICK_ACTIVITY使用说明 ,具体可以参考SDK Intent类

功能:显示匹配附加值为EXTRA_INTENT的所有Activity,并将它们以列表呈现给用户。当用户从该列表选中一项

时,并不会启动该Activity(这与与ACTION_CHOOSER不同,此Action会启动用户选择的Activity),而是将该Activity的详细信

息(可能包括Action、ComponentName、data信息等)以Intent对象返回给调用者(通常为onActivityResult方法)。

附加值:EXTRA_INTENT  显示所有匹配显示所有匹配附加值为EXTRA_INTENT的Activity,

EXTRA_TITLE     作为显示列表即所有Activity的标题 。

因此,根据ACTION_PICK_ACTIVITY的特性,真正地创建快捷方式需要两步走:

第一步:发送ACTION_PICK_ACTIVITY以及EXTRA_INTENT,找到我们希望能创建快捷方式的Activity列表。

第二步:根据第一步所选择的Activity返回的Intent对象,再次发送此Intent对象,即可创建该Activity提供给

我们快捷方式了。

例如,下面我们只是简单的发送一个请求显示所有应用程序的Intent,如下:

  1. //重新发送一个Action为Pick_Activity的Intent,获取所有应用程序信息   
  2.               Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);  
  3.               Intent mainIntent = new Intent () ;  
  4.               mainIntent.setAction(Intent.ACTION_MAIN);  
  5.               mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
  6.                 
  7.               pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);  
  8.               pickIntent.putExtra(Intent.EXTRA_TITLE, "选择应用程序"); //设置界面title   
  9.                 
  10.               //继续选择所有应用程序   
  11.               startActivityForResult(pickIntent,MY_REQUEST_ALL_APPLICATION );  

ACTION_PICK_ACTIVITY效果图如下:

Android中实现Launcher功能之添加快捷方式

点击某一具体Activity  , 即可选择创建该Activity的快捷方式了。

相关推荐