快捷方式删除不成功的解决办法

来源:互联网 发布:洗脑神曲排行榜 知乎 编辑:程序博客网 时间:2024/05/22 10:44


首先创建和删除的代码如下:

 

 public void addShortcut(Context context) {        Intent shortcutIntent = new Intent();        shortcutIntent.setClassName("com.telespree.android.client", "com.telespree.android.client.ShortcutTest");        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        Intent intent = new Intent();        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutTest");        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));        intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");        shortcutUri = intent.toUri(MODE_WORLD_WRITEABLE);        context.sendBroadcast(intent);    }


 public void removeShortcut(Context context) {        Intent intent = null;        try {            intent = Intent.parseUri(shortcutUri, 0);        } catch (URISyntaxException e) {        }        intent.setAction("com.android.launcher.permission.UNINSTALL_SHORTCUT");        context.sendBroadcast(intent);    }

解决的办法如下:

Try to use

public void removeShortcut(Context context) {        Intent intent = new Intent();        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutTest");        try {            Intent shortcutIntent = Intent.parseUri(shortcutUri, 0);            intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);        } catch (URISyntaxException e) {        }        intent.setAction("com.android.launcher.permission.UNINSTALL_SHORTCUT");        context.sendBroadcast(intent);    }

Note: You do not have to save shortcutUri to remove the shortcut. Instead you can use

Intent shortcutIntent = new Intent();shortcutIntent.setClassName("com.telespree.android.client",        "com.telespree.android.client.ShortcutTest");shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);Intent intent = new Intent();try {    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,            Intent.parseUri(shortcutIntent.toUri(0), 0));} catch (URISyntaxException e) {    e.printStackTrace();}...intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");context.sendBroadcast(intent);

If you want to use intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); instead of

intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,                Intent.parseUri(shortcutIntent.toUri(0), 0));

then you need to set action for shortcutIntent each time , i.e. while installing as well as while uninstalling e.g.Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);

参考资料:

Trying to UNINSTALL_SHORTCUT but shortcut won't go away



原创粉丝点击