如何知道android快捷方式是否已经存在

时间:2012-03-19 13:14:34

标签: android

创建快捷方式时,我会像#34;快捷方式创建"然后"快捷方式已经存在"。我已经设置了重复的意图,并没有创建任何重复。现在我怀疑是

  1. 如何检测快捷方式是否已存在。

  2. 如何禁用to"快捷方式创建的Toast消息"和#34;快捷方式已经存在"。我已经检查了显示Toast的LauncherModel(在com.android下)api,但像WhatsApp这样的应用程序不显示任何Toast。

3 个答案:

答案 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已经存在”的消息。

我尝试更改联系人姓名,但确实有效。