有非常多人也写过创建桌面快捷键的blog。可是大部分都仅仅讲了怎么用,事实上技术使用起来都非常easy。可是你使用后下次还知道吗?

根本原因还是不清楚原理。今天我就来讲讲shortcut创建过程。

过程:

home键--》点击加入--》弹出一个Dialog对话框--》Dialog对话框中的数据。是一个系统级专门用来查找的Activity启动
---》查找出数据显示能加入的快捷方式---》然后保存数据。退出dialog——》桌面launcher操作——》完毕


原理:

查看源代码。事实上是launcher 中调用pickShortcut()方法,启动PickActivity检查须要的数据,在PickActivity中会检查

manifest.xml中对activity有没有加IntenttFilter,假设查到有,就会通过switch-case选择对于的Item返回消息给laucher,

laucher中在onResultActivity()做接受返回的数据,再次启动一个带返回值得Activity到ShortcutActivity,等待ShortcutActivity

处理完毕,返回信息,调用completeAddliveFolder(). 

 事实上我们要做的主要是下图步骤2和步骤5;步骤2 在manifest.xml给Activity加入IntentFileter,步骤5,给快捷方式加入一个

图标和名称。


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uamFuZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

代码:

 <activity android:name="ShortCutTest">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
</intent-filter>
</activity>
public class ShortCutTest extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
createShortCut();
} public void createShortCut(){
Intent addShortCut;
//推断是否须要加入快捷方式
if(getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)){
addShortCut = new Intent();
//快捷方式的名称
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME , "我的快捷方式");
//显示的图片
Parcelable icon = ShortcutIconResource.fromContext(this, R.drawable.icon);
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
//快捷方式激活的activity,须要运行的intent,自定义
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent());
//OK,生成
setResult(RESULT_OK, addShortCut);
}else{
//取消
setResult(RESULT_CANCELED);
}
}
}

理解了原理,是不是再也不会忘记怎么加入快捷方式了

最新文章

  1. shell 除法 小数点
  2. mongodb .net core 调用
  3. HDU——PKU题目分类
  4. VS2010 使用时选择代码或双击时出错,点击窗口按钮后VS自动重启问题
  5. BZOJ3236: [Ahoi2013]作业
  6. html 用图片代替重置按钮
  7. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证--2.1使用Azure AD需要了解几个概念]
  8. 如何通过热修复,搞定开发中的那些 Bug?
  9. IDE 常用快捷键记录
  10. Linux 硬连接和软连接的原理 (in使用)
  11. Fiddler 的几个用法
  12. 剑指offer ------ 刷题总结
  13. MongoDB用户权限管理
  14. 常用接口简析2---IComparable和IComparer接口的简析
  15. OAF隐藏显示题头
  16. 浅析JavaScript工厂模式
  17. 剑指Offer-- 二叉搜索树的后序遍历序列判断
  18. 简单配置umiJS学习笔记
  19. Typescript 学习笔记三:函数
  20. [AtCoder ARC101D/ABC107D] Median of Medians

热门文章

  1. putty和xshell使用和免密登录
  2. 前端之HEML
  3. POJ 3275 Floyd传递闭包
  4. 6.Renderer Window
  5. [hihocoder][Offer收割]编程练习赛46
  6. (转载)更新到Retrofit2的一些技巧
  7. 23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博等
  8. XML DTD跟SCHEMA约束 语法了解
  9. iOS中容易混淆的知识点(持续更新中)
  10. 修复lsp,360浏览器可以上网其它软件不行