Android快捷方式无法在其他应用实例

时间:2016-01-04 14:56:27

标签: android shortcut

我正在尝试为我的应用添加/删除快捷方式。 “添加”代码非常完美。但是只有在我创建它的同一个app实例上运行它时,删除才有效。如果我创建了快捷方式,那么重新启动应用程序并最终执行它失败的“删除”代码(不要删除图标)。

这是我的代码:

public static void add(Class<? extends Activity> activity, String name, Bitmap icon) {
    Context context = ...;

    icon = scaleIcon(context, icon);

    Intent shortcutIntent = new Intent(context, activity);
    shortcutIntent.setAction(Intent.ACTION_MAIN);
    int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
    shortcutIntent.setFlags(flags);

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
    addIntent.setAction(SHORTCUT_INSTALL);

    context.sendBroadcast(addIntent);
}

public static void remove(Class<? extends Activity> activity, String name) {
    Context context = ...;

    Intent shortcutIntent = new Intent(context, activity);
    shortcutIntent.setAction(Intent.ACTION_MAIN);
    int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
    shortcutIntent.setFlags(flags);

    Intent removeIntent = new Intent(SHORTCUT_UNINSTALL);
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);

    context.sendBroadcast(removeIntent);
}
顺便说一句,我找不到关于快捷方式的android文档。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可能需要添加此权限:

<uses-permission
        android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

Source