创建快捷方式时,我会像#34;快捷方式创建"然后"快捷方式已经存在"。我已经设置了重复的意图,并没有创建任何重复。现在我怀疑是
如何检测快捷方式是否已存在。
如何禁用to"快捷方式创建的Toast消息"和#34;快捷方式已经存在"。我已经检查了显示Toast的LauncherModel(在com.android下)api,但像WhatsApp这样的应用程序不显示任何Toast。
答案 0 :(得分:5)
创建快捷方式时,您可以像这样添加
addIntent.putExtra(“duplicate”,true);
(然后在创建时创建重复的快捷方式,即使它存在)
ex.
public void createShortcut(String url,,String classname,String shortcutName , String type)
{
Intent shortcutIntent = new Intent();
shortcutIntent.setAction(Intent.ACTION_VIEW);
if(type.equalsIgnoreCase("web")) {
Uri uri = Uri.parse(url);
shortcutIntent.setData(uri);
}
else if (type.equalsIgnoreCase("app")) {
shortcutIntent.setClassName(url,classname);
}
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
addIntent.putExtra("duplicate", true);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, R.drawable.ic_launcher);
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(addIntent);
// Toast mToast = Toast.makeText(this, "shortcut created", Toast.LENGTH_SHORT);
// mToast.show();
}
答案 1 :(得分:1)
您必须使用uniqie ID作为快捷方式(例如,来自服务器db的快捷方式名称或ID)
请求添加快捷方式:
if (loadBoolean(context, String.valueOf(shortcutid))) return;
在sendbroadcast方法之后,您必须致电:
saveBoolean(context, true, String.valueOf(shortcutid));
保存和加载方法代码:
protected static boolean saveBoolean(Context context, boolean value, String tag) {
try {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(tag, value).apply();
} catch (Exception e) {
return false;
}
return true;
}
protected static boolean loadBoolean(Context context, String tag) {
boolean value = false;
try {
value = PreferenceManager.getDefaultSharedPreferences(context).getBoolean(tag, false);
} catch (Exception ignored) {}
return value;
}
答案 2 :(得分:0)
我也遇到了和你一样的问题,我已经删除了想要再次创建它的快捷方式,但它仍然出现了“Shortcut xxx已经存在”的消息。
我尝试更改联系人姓名,但确实有效。