diff --git a/res/menu/conversation_copy_session_id.xml b/res/menu/conversation_copy_session_id.xml new file mode 100644 index 0000000000..e74d0b4c24 --- /dev/null +++ b/res/menu/conversation_copy_session_id.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 4a2b5ca5e3..37828d83af 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1855,4 +1855,6 @@ Secure session reset done + Copy Session ID + diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 5beff5770f..db705b4f14 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -22,6 +22,8 @@ import android.annotation.TargetApi; import androidx.lifecycle.ViewModelProviders; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -760,6 +762,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } else { inflater.inflate(R.menu.conversation_block, menu); } + inflater.inflate(R.menu.conversation_copy_session_id, menu); } else if (isGroupConversation() && !isOpenGroupOrRSSFeed) { // inflater.inflate(R.menu.conversation_group_options, menu); @@ -867,6 +870,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity case R.id.menu_call_insecure: handleDial(getRecipient(), false); return true; case R.id.menu_unblock: handleUnblock(); return true; case R.id.menu_block: handleBlock(); return true; + case R.id.menu_copy_session_id: handleCopySessionID(); return true; case R.id.menu_view_media: handleViewMedia(); return true; case R.id.menu_add_shortcut: handleAddShortcut(); return true; case R.id.menu_search: handleSearch(); return true; @@ -1096,6 +1100,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity }).show(); } + private void handleCopySessionID() { + if (recipient.isGroupRecipient()) { return; } + String sessionID = recipient.getAddress().toPhoneString(); + ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("Session ID", sessionID); + clipboard.setPrimaryClip(clip); + Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show(); + } + private void handleViewMedia() { Intent intent = new Intent(this, MediaOverviewActivity.class); intent.putExtra(MediaOverviewActivity.ADDRESS_EXTRA, recipient.getAddress());