1package com.android.launcher3.shortcuts;
2
3import android.content.ComponentName;
4import android.content.Intent;
5import android.os.UserHandle;
6
7import com.android.launcher3.ItemInfo;
8import com.android.launcher3.util.ComponentKey;
9
10/**
11 * A key that uniquely identifies a shortcut using its package, id, and user handle.
12 */
13public class ShortcutKey extends ComponentKey {
14
15    public ShortcutKey(String packageName, UserHandle user, String id) {
16        // Use the id as the class name.
17        super(new ComponentName(packageName, id), user);
18    }
19
20    public String getId() {
21        return componentName.getClassName();
22    }
23
24    public static ShortcutKey fromInfo(ShortcutInfoCompat shortcutInfo) {
25        return new ShortcutKey(shortcutInfo.getPackage(), shortcutInfo.getUserHandle(),
26                shortcutInfo.getId());
27    }
28
29    public static ShortcutKey fromIntent(Intent intent, UserHandle user) {
30        String shortcutId = intent.getStringExtra(
31                ShortcutInfoCompat.EXTRA_SHORTCUT_ID);
32        return new ShortcutKey(intent.getPackage(), user, shortcutId);
33    }
34
35    public static ShortcutKey fromItemInfo(ItemInfo info) {
36        return fromIntent(info.getIntent(), info.user);
37    }
38}
39