权限:
<!-- 添加快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- 移除快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
代码:
public void cs() {
Intent.ShortcutIconResource icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.a);
Intent intentLauncher = new Intent();
intentLauncher.setAction("android.intent.action.VIEW");
// intentLauncher.setClass() 如果启动的不是本应用的Activity则会导致卸载应用时不会删除快捷方式,它的作用是指定快捷方式点击之后会执行什么操作
Intent intentAddShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// 是否允许重复创建快捷方式
intentAddShortcut.putExtra("duplicate", false);
// 快捷方式名称
intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "111");
// 快捷方式图标 intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intentLauncher);
sendBroadcast(intentAddShortcut);
}
关于兼容性:
此处还有一个问题,是关于隐藏应用图标的(上篇博客),Oppo A31手机隐藏主图标后会将其创建出来的快捷方式一同隐藏。经测试,问题出在 intentLauncher.setClass() 上,如果启动是本应用的Activity则会出现上述结果,如果不是本应用的Activity则不会隐藏,原因目前未知。求大神告知!