让程序更好更多的被用户使用到,向桌面添加一个程序的快捷方式将是一种快捷方式,正好我在开发阅读器的时候,用到过这个知识点。为了方便,这里还是再新建一个项目来讲解一下是如何做到让用户通过点击一个按钮来实现向桌面添加一个快捷方式的。想学习这方面知识的朋友,可以借鉴一下,文章中最后附源码哈。
其实在程序中要向桌面添加程序的快捷方式,只需简单的三步。
我们知道要发送一个广播,必须要有一个要广播的Intent,通过设置Intent的action属性值来让接收者知道这个intent的意图;
其次就是要设置快捷方式要启动的程序,快捷方式的图标和名称,这肯定是可以理解的;
最后一步,便是将第一步中的广播发送出去啦。
具体如下:
首先,创建一个添加快捷方式的Intent,该Intent的Action的属性值应该是com.android.launcher.INSTAL_SHORTCUT,这一步的代码是通用的;
//向桌面添加快捷方式的广播意图 Intent addShortCutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
其次,通过为该 Intent 添加 Extra 属性来设置快捷方式的标题、图标及快捷方式对应的启动程序(分别对应下面的代码);
//桌面快捷方式的图标 Parcelable icon = Intent.ShortcutIconResource.fromContext(AddShortCutActivity.this, R.drawable.ic_launcher); //用于点击快捷方式要启动的程序,这里就启动本程序了 Intent startIntent = new Intent(AddShortCutActivity.this, AddShortCutActivity.class); //快捷方式的名称 addShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "快捷方式"); //快捷方式的图标 addShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); //将快捷方式与要启动的程序关联起来 addShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, startIntent);
最后,就是调用 sendBroadcast() 方法发送广播即可添加快捷方式。
//发送广播,添加快捷方式 sendBroadcast(addShortCutIntent);
另外,还有一点需要注意的是,用户的桌面不是随随便便就可以让你添加个快捷方式的,这个过程还是需要一个权限的,这个权限就是: com.android.launcher.permission.INSTAL_SAHORTCUT 。
<!--添加快捷方式需要的权限 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
通过发送广播来向桌面添加程序的快捷方式,体现了一种通过广播接收者来实现组件间进行通信的一种新思路。其实本质还是通过 intent 实现的组件间的通信。
除了这种在程序中,向桌面添加快捷方式之外,还可以向launcher添加快捷方式,这种方式只需要在AndroidManifest.xml中配置要启动的程序的Activity的<intent-filter>元素即可。
<intent-filter> <action android:name="android.intent.action.CREAT_SHORTCUT"/> </intent-filter>
这样配置完成后,便会在 Shortcuts 列表中看到新添加的快捷方式。这种方式配置简单,但明显没有将快捷方式添加到桌面来的方便。
源码: