创建和删除桌面快捷方式的代码网上很多,整合一下留着自己用。
主要是实现了程序第一次打开的时候创建快捷方式,程序卸载的时候自动删除快捷方式。
Activity代码:
if (!hasShortCut()) {
createShortCut();
}
/**
* 添加桌面快捷方式
*
*/
private void createShortCut() {
Intent intent = new Intent();
intent.setClass(this, OpenActivity.class);
intent.setAction("android.intent.action.MAIN"); // 1
intent.addCategory("android.intent.category.LAUNCHER"); // 2 包含这两行,程序卸载时自动删除快捷方式
Intent addShortcut = new Intent(
"com.android.launcher.action.INSTALL_SHORTCUT");
Parcelable icon = Intent.ShortcutIconResource.fromContext(this,
R.drawable.app_icon);
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
getString(R.string.app_name));
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
addShortcut.putExtra("duplicate", 0);
addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
sendBroadcast(addShortcut);
}
/**
* 判断快捷方式是否存在
*
*/
private boolean hasShortCut() {
boolean isInstallShortcut = false;
final ContentResolver cr = getContentResolver();
final Uri CONTENT_URI = Uri
.parse("content://com.android.launcher2.settings/favorites?notify=true");
Cursor c = cr.query(CONTENT_URI,
new String[] { "title", "iconResource" }, "title=?",
new String[] { getString(R.string.app_name).trim() }, null);
if (c != null && c.getCount() > 0) {
isInstallShortcut = true;
}
return isInstallShortcut;
}
Manifest.xml
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />