diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index 10c674713152ada1db33edb8b19b59f727570efa..478d7d07cb96a806a630878da5abf6e3f740cb55 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -62,6 +62,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.pm.ShortcutInfoCompat;
+import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.view.inputmethod.InputConnectionCompat;
import androidx.core.view.inputmethod.InputContentInfoCompat;
import androidx.databinding.DataBindingUtil;
@@ -1757,6 +1759,9 @@ public class ConversationFragment extends XmppFragment
case R.id.action_toggle_pinned:
togglePinned();
break;
+ case R.id.action_add_shortcut:
+ addShortcut();
+ break;
case R.id.action_refresh_feature_discovery:
refreshFeatureDiscovery();
break;
@@ -1826,6 +1831,11 @@ public class ConversationFragment extends XmppFragment
}
}
+ private void addShortcut() {
+ ShortcutInfoCompat info = activity.xmppConnectionService.getShortcutService().getShortcutInfoCompat(conversation.getContact());
+ ShortcutManagerCompat.requestPinShortcut(activity, info, null);
+ }
+
private void togglePinned() {
final boolean pinned =
conversation.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false);
diff --git a/src/main/res/menu/fragment_conversation.xml b/src/main/res/menu/fragment_conversation.xml
index cf4044d25b8e3d882a462456fed4055d9541c3cc..253a65673cbde364b2b0a0cf9b8b86e0e5912144 100644
--- a/src/main/res/menu/fragment_conversation.xml
+++ b/src/main/res/menu/fragment_conversation.xml
@@ -131,6 +131,12 @@
android:title="@string/add_to_favorites"
app:showAsAction="never" />
+
+