有很多人也写过创建桌面快捷键的blog,但是大部分都只讲了怎么用,其实技术使用起来都很简单,但是你使用后下次还知道吗?
根本原因还是不清楚原理,今天我就来讲讲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,给快捷方式添加一个
图标和名称。
代码:
<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); } } }
理解了原理,是不是再也不会忘记怎么添加快捷方式了