下面是主要步骤及主要代码:
第一步:权限,创建与删除,需要加入权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
第二步:编写代码
public void deleteShortCut() {
String DROP_SHORTCUT_ACTION = "com.android.launcher.action.UNINSTALL_SHORTCUT";
Intent intent2 = new Intent(DROP_SHORTCUT_ACTION);
// 指定要删除的shortcut名称
intent2.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina1");
String appClass2 = getPackageName() + "." + getLocalClassName();
ComponentName component2 = new ComponentName(getPackageName(),
appClass2);
intent2.putExtra(
Intent.EXTRA_SHORTCUT_INTENT,
new Intent().setAction(Intent.ACTION_MAIN).setComponent(
component2));
sendBroadcast(intent2);
}
public void createShortCut() {
String CREATE_SHORTCUT_ACTION = "com.android.launcher.action.INSTALL_SHORTCUT";
Intent intent = new Intent(CREATE_SHORTCUT_ACTION);
// 设置快捷方式图片
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this,
R.drawable.welcome));
// 设置快捷方式名称
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina1");
// 设置是否允许重复创建快捷方式 false表示不允许
intent.putExtra("duplicate", false);
// 设置快捷方式要打开的intent
// 第一种方法创建快捷方式要打开的目标intent
String appClass = getPackageName() + "." + getLocalClassName();
ComponentName component = new ComponentName(getPackageName(), appClass);
intent.putExtra(
Intent.EXTRA_SHORTCUT_INTENT,
new Intent().setAction(Intent.ACTION_MAIN).setComponent(
component));
// 发送广播
sendBroadcast(intent);
}
注意点:
1.重复创建,系统会用Toast提示:“sina1 快捷方式已经存在”
2 删除快捷方式后,可以再创建,不会提示 “sina1 快捷方式已经存在”,也表示删除成功
3 删除快捷方式后,桌面快捷方式还存在,有延迟,切换桌面后,快捷方式就不见了,不是没有删除成功