diff --git a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java
index 3c6da03f..02aad069 100644
--- a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java
+++ b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java
@@ -1,5 +1,7 @@
package com.github.gotify.messages;
+import android.content.ClipData;
+import android.content.ClipboardManager;
import android.content.Context;
import android.text.util.Linkify;
import android.view.LayoutInflater;
@@ -8,6 +10,7 @@
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
@@ -133,6 +136,7 @@ static class ViewHolder extends RecyclerView.ViewHolder {
ButterKnife.bind(this, view);
preciseDate = false;
dateTime = null;
+ enableCopyToClipboard();
}
void switchPreciseDate() {
@@ -157,6 +161,33 @@ void updateDate() {
}
date.setText(text);
}
+
+ private void enableCopyToClipboard() {
+ super.itemView.setOnLongClickListener(
+ view -> {
+ ClipboardManager clipboard =
+ (ClipboardManager)
+ view.getContext()
+ .getSystemService(Context.CLIPBOARD_SERVICE);
+ ClipData clip =
+ ClipData.newPlainText(
+ "GotifyMessageContent", message.getText().toString());
+
+ if (clipboard != null) {
+ clipboard.setPrimaryClip(clip);
+ Toast toast =
+ Toast.makeText(
+ view.getContext(),
+ view.getContext()
+ .getString(
+ R.string.message_copied_to_clipboard),
+ Toast.LENGTH_SHORT);
+ toast.show();
+ }
+
+ return true;
+ });
+ }
}
public interface Delete {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7daf1135..a52569e7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -74,4 +74,5 @@
Title
Content
Priority
+ Content copied to clipboard