创建安卓桌面快捷方式
程序员文章站
2022-03-31 21:40:40
...
last modify:2013-11-14 17:30:03
×××××××××××××××××××××××××××
在一些软件启动时常常会创建一个快捷启动方式在桌面,那么是怎么实现的呢?
首先,如果一个应用要在android桌面创建一个快捷方式,那么必须拥有以下权限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
下面是具体的实现代码:
private void createShortcut() {
Intent intent = new Intent();
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
//步骤1:设置快捷方式的名称,注意系统在判断桌面的快捷方式是否重复时,是通过快捷方式的名称判断的,与图片无关。
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "捍 卫");
//步骤2:设置快捷方式的图片资源. 有两种方式:
//第一种:EXTRA_SHORTCUT_ICON_RESOURCE:设置快捷方式的图片icon资源,要求格式为ShortcutIconResource类型。
//intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, ShortcutIconResource.fromContext(this, R.drawable.android));
//第二种:EXTRA_SHORTCUT_ICON:也是设置快捷方式的图片icon资源,但是要求的格式是一个bitmap类型,
//并且优先于上面的EXTRA_SHORTCUT_ICON_RESOURCE.如果两者都定义以EXTRA_SHORTCUT_ICON为主。
//定义一个bitmap: BitmapFactory.decodeResource(getResources(), R.drawable.atools)
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
//防止重复创建快捷图标
intent.putExtra("duplicate", false);
//设置快捷方式的意图
Intent shortcutIntent = new Intent(); //必须使用隐式意图或者包名类名形式启动,否则无法从快捷方式启动应用。
//第一种初始化方式:通过包名和类名形式
//shortcutIntent.setClassName(getPackageName(), "com.***.activity.HomeActivity");
//第二种初始化方式:通过意图过滤器
shortcutIntent.setAction("com.***.intent.action.HOME");
shortcutIntent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
//发送广播给系统,系统接受到这个广播就会按照设定的name和图标icon创建桌面快捷方式
sendBroadcast(intent);
}
推荐阅读