Android:如何从主屏幕删除/卸载应用程序快捷方式?

时间:2012-10-12 06:28:04

标签: android

我一直在尝试(添加然后)从HOME-SCREEN中删除我的APP的快捷方式。 添加快捷方式可以很好地工作但是我无法使用下面的代码删除我创建的快捷方式。

public void setupShortCut(boolean create) {
        shortcutIntent = new Intent();
        shortcutIntent.setClassName("com.abc.xyz", "XYZActivity");
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);

        Intent intentShortcut = new Intent();
        intentShortcut.putExtra("android.intent.extra.shortcut.INTENT", shortcutIntent);
        intentShortcut.putExtra("android.intent.extra.shortcut.NAME", getResources().getString(R.string.app_name));
        intentShortcut.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", icon);
        if(create) {
          intentShortcut.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        } else {
        intentShortcut.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
        }
        sendBroadcast(intentShortcut);
    }

请说明我哪里出错?

编辑1:

我需要在我的清单文件中获得许可:

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

3 个答案:

答案 0 :(得分:4)

你走了:

private void deleteShortCut(Context context) {

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    shortcutIntent.putExtra("someParameter", "HelloWorld");

    Intent removeIntent = new Intent();
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName");
    removeIntent.putExtra("duplicate", false);

    removeIntent
            .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");       
    context.sendBroadcast(removeIntent);
}

答案 1 :(得分:1)

要删除快捷方式,请尝试使用以下代码...

final Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setComponent(new ComponentName(this.getPackageName(), "YourClassName"));

final Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));          
intent.setComponent(new ComponentName(this.getPackageName(), "YourClassName"));                     
intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");

sendBroadcast(intent, null);

在您的清单文件中添加以下权限:

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

答案 2 :(得分:1)

根据根本原因: - )

我弄清楚它为什么不适合我的原因。 我在手机上使用了不同的第三方发射器(除了Stock android启动器)。 只要您使用的启动器支持该操作,创建和删除App-Shortcut就可以正常工作。 我在默认启动器上运行了上面的代码,它就像一个魅力:)

感谢大家的回复!