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