Add permission:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
Code:
private void setUpShortCut() { Intent intent = new Intent(CREATE_SHORTCUT_ACTION); // 设置快捷方式图片 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this, R.drawable.logo)); // 设置快捷方式名称 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina"); // 设置是否允许重复创建快捷方式 false表示不允许 intent.putExtra("duplicate", false); // 设置快捷方式要打开的intent // 第一种方法创建快捷方式要打开的目标intent Intent targetIntent = new Intent(); // 设置应用程序卸载时同时也删除桌面快捷方式 targetIntent.setAction(Intent.ACTION_MAIN); targetIntent.addCategory("android.intent.category.LAUNCHER"); ComponentName componentName = new ComponentName(getPackageName(), this.getClass().getName()); targetIntent.setComponent(componentName); // 第二种方法创建快捷方式要打开的目标intent intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent); // 发送广播 sendBroadcast(intent); } private void tearDownShortCut() { Intent intent = new Intent(DROP_SHORTCUT_ACTION); // 指定要删除的shortcut名称 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina"); String appClass = getPackageName() + "." + this.getLocalClassName(); ComponentName component = new ComponentName(getPackageName(), appClass); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent().setAction(Intent.ACTION_MAIN).setComponent(component)); sendBroadcast(intent); }
Or:
if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) { setupShortcut(); finish(); return; } ... private void setupShortcut() { // First, set up the shortcut intent. //For this example, we simply create an intent that // will bring us directly back to this activity. //A more typical implementation would use a // data Uri in order to display a more specific result, //or a custom action in order to // launch a specific operation. Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName(this, this.getClass().getName()); shortcutIntent.putExtra(EXTRA_KEY, "ApiDemos Provided This Shortcut"); // Then, set up the container intent (the response to the caller) Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name)); Parcelable iconResource = Intent.ShortcutIconResource.fromContext( this, R.drawable.app_sample_code); intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); // Now, return the result to the launcher setResult(RESULT_OK, intent); }