Android快捷图标的创建与移除
/** * 添加桌面快捷方式 * * @param view */ public void click1(View view) { if (isExit()) { Toast.makeText(getApplicationContext(), "快捷方式已经存在", 0).show(); return; } // 取得图标资源 Parcelable icon = Intent.ShortcutIconResource.fromContext( getApplicationContext(), R.drawable.logo); Intent intent = new Intent(); // 设置意图的动作 intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); // 设置图标的名称 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL"); // 设置图标 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); // 设置意图的动作和类别 Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_MAIN); intent2.addCategory(Intent.CATEGORY_LAUNCHER); intent2.setComponent(new ComponentName(this, MainActivity.class)); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2); sendBroadcast(intent); }
/** * 删除桌面快捷方式 * * @param view */ public void click2(View view) { Parcelable icon = Intent.ShortcutIconResource.fromContext( getApplicationContext(), R.drawable.logo); Intent intent = new Intent(); // 设置意图的动作 intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT"); // 设置图标的名称 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL"); // 设置图标 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); // 设置意图的动作和类别 Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_MAIN); intent2.addCategory(Intent.CATEGORY_LAUNCHER); intent2.setComponent(new ComponentName(this, MainActivity.class)); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2); sendBroadcast(intent); }
/** * 判断桌面是否已经存在快捷方式 * * @return */ private boolean isExit() { Uri uri = null; // 不同版本中的Uri不同 if (getSdkVersion() < 8) { uri = Uri .parse("content://com.android.launcher.settings/favorites"); } else { uri = Uri .parse("content://com.android.launcher2.settings/favorites"); } String selection = "title=?"; String[] selectionArgs = new String[] { "LOL" }; Cursor cursor = getContentResolver().query(uri, null, selection, selectionArgs, null); if (cursor.moveToNext()) { cursor.close(); return true; } else { cursor.close(); return false; } }
/** * 获得手机SDK的版本 * * @return */ private int getSdkVersion() { return android.os.Build.VERSION.SDK_INT; }
需要声明的权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- 读取设置权限 -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 删除快捷方式权限 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>