diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/StatusActionModeCallback.java b/twidere/src/main/java/org/mariotaku/twidere/util/StatusActionModeCallback.java index 2a2e1d205..42f261ba6 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/StatusActionModeCallback.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/StatusActionModeCallback.java @@ -20,7 +20,7 @@ package org.mariotaku.twidere.util; import android.content.Context; -import android.support.v4.view.MenuItemCompat; +import android.content.Intent; import android.text.SpannableString; import android.text.style.URLSpan; import android.view.ActionMode; @@ -55,16 +55,16 @@ public class StatusActionModeCallback implements ActionMode.Callback { final int start = textView.getSelectionStart(), end = textView.getSelectionEnd(); final SpannableString string = SpannableString.valueOf(textView.getText()); final URLSpan[] spans = string.getSpans(start, end, URLSpan.class); - final boolean avail = spans.length == 1 && URLUtil.isValidUrl(spans[0].getURL()); - MenuUtils.setMenuItemAvailability(menu, android.R.id.copyUrl, avail); - MenuUtils.setMenuItemShowAsActionFlags(menu, android.R.id.copyUrl, MenuItemCompat.SHOW_AS_ACTION_ALWAYS); + final boolean selectingLink = spans.length == 1 && URLUtil.isValidUrl(spans[0].getURL()); + MenuUtils.setMenuItemAvailability(menu, R.id.copy_url, selectingLink); + MenuUtils.setMenuItemAvailability(menu, R.id.share_url, selectingLink); return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { - case android.R.id.copyUrl: { + case R.id.copy_url: { final int start = textView.getSelectionStart(), end = textView.getSelectionEnd(); final SpannableString string = SpannableString.valueOf(textView.getText()); final URLSpan[] spans = string.getSpans(start, end, URLSpan.class); @@ -73,6 +73,18 @@ public class StatusActionModeCallback implements ActionMode.Callback { mode.finish(); return true; } + case R.id.share_url: { + final int start = textView.getSelectionStart(), end = textView.getSelectionEnd(); + final SpannableString string = SpannableString.valueOf(textView.getText()); + final URLSpan[] spans = string.getSpans(start, end, URLSpan.class); + if (spans.length != 1) return true; + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + shareIntent.putExtra(Intent.EXTRA_TEXT, spans[0].getURL()); + context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string.share_link))); + mode.finish(); + return true; + } } return false; } diff --git a/twidere/src/main/res/menu/action_status_text_selection.xml b/twidere/src/main/res/menu/action_status_text_selection.xml index 3f3008ce5..d19a53b17 100644 --- a/twidere/src/main/res/menu/action_status_text_selection.xml +++ b/twidere/src/main/res/menu/action_status_text_selection.xml @@ -3,9 +3,14 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + \ No newline at end of file diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index 70ac23d91..dd86b68e4 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -806,4 +806,5 @@ Edit description No content Tweet not available + Share link \ No newline at end of file