桌面快捷菜单就像手机app程序在桌面生成启动图标,但快捷菜单并不是app程序,点击快捷菜单启动的并不是一个程序。
那么,快捷菜单究竟是怎样的呢?
我们大多数人都有看小说或浏览网页的习惯吧!比如打开浏览器阅读自己喜欢的小说或浏览喜欢的网页,但如果你下次想再打开进行浏览阅读,那就得要乖乖的从打开浏览器这一步开始了,这样的过程其实没必要,因为我们的目的只是想打开某个网页,因此快捷菜单就是为此提供了便捷的功能。
实现生成快捷菜单的方法其实是利用发送广播的方式告诉Android系统为其在桌面上生成一个快捷菜单图标,并点击图标能够触发相关的操作。
1、权限声明
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
2、工具类
public class ShortCutTool {
/**
* 添加桌面图标快捷方式
* @param context Context对象
* @param name 快捷方式名称
* @param icon 快捷方式图标
* @param actionIntent 快捷方式图标点击动作
*/
public static void addShortcut(Context context, String name, int icon, Intent actionIntent) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
// 创建快捷方式的intent广播
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// 添加快捷名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
// 快捷图标是允许重复
shortcut.putExtra("duplicate", false);
// 快捷图标
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, icon));
// 添加携带的下次启动要用的Intent信息
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, actionIntent);
// 发送广播
context.sendBroadcast(shortcut);
}
}
}
3、生成快捷菜单
Intent shortcutInfoIntent = new Intent();
shortcutInfoIntent.setData(Uri.parse("https://www.baidu.com"));
shortcutInfoIntent.setAction(Intent.ACTION_VIEW); //action必须设置,不然报错
ShortCutTool.addShortcut(this, "快捷菜单", R.drawable.baidu,shortcutInfoIntent);
以上三步即可在桌面上生成一个图标并点击后可在浏览器上打开百度的快捷菜单了。
注:快捷菜单跟随所传递的context的应用程序,若应用程序被删除(卸载),快捷菜单也会一并消失。快捷菜单并不是百分百能够生成,经过试验某些国产手机并不能生成桌面快捷菜单,同时某些手机需要授权生成快捷菜单权限,否则生成不了快捷菜单,这几点需要注意。