Sharing images and text from other apps is now supported. Closes #52

main
Vavassor 8 years ago
parent 0719512134
commit 27dd106988
  1. 5
      app/src/main/AndroidManifest.xml
  2. 19
      app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java

@ -39,6 +39,11 @@
<activity <activity
android:name=".ComposeActivity" android:name=".ComposeActivity"
android:windowSoftInputMode="stateVisible|adjustResize"> android:windowSoftInputMode="stateVisible|adjustResize">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />

@ -81,7 +81,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -484,12 +483,13 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFrag
for (SavedQueuedMedia item : savedMediaQueued) { for (SavedQueuedMedia item : savedMediaQueued) {
addMediaToQueue(item.type, item.preview, item.uri, item.mediaSize); addMediaToQueue(item.type, item.preview, item.uri, item.mediaSize);
} }
} else if (savedInstanceState == null) { } else if (intent != null && savedInstanceState == null) {
/* Get incoming images being sent through a share action from another app. Only do this /* Get incoming images being sent through a share action from another app. Only do this
* when savedInstanceState is null, otherwise both the images from the intent and the * when savedInstanceState is null, otherwise both the images from the intent and the
* instance state will be re-queued. */ * instance state will be re-queued. */
String type = intent.getType(); String type = intent.getType();
if (type != null && type.startsWith("image/")) { if (type != null) {
if (type.startsWith("image/")) {
List<Uri> uriList = new ArrayList<>(); List<Uri> uriList = new ArrayList<>();
switch (intent.getAction()) { switch (intent.getAction()) {
case Intent.ACTION_SEND: { case Intent.ACTION_SEND: {
@ -516,6 +516,19 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFrag
long mediaSize = getMediaSize(getContentResolver(), uri); long mediaSize = getMediaSize(getContentResolver(), uri);
pickMedia(uri, mediaSize); pickMedia(uri, mediaSize);
} }
} else if (type.equals("text/plain")) {
String action = intent.getAction();
if (action != null && action.equals(Intent.ACTION_SEND)) {
String text = intent.getStringExtra(Intent.EXTRA_TEXT);
if (text != null) {
int start = Math.max(textEditor.getSelectionStart(), 0);
int end = Math.max(textEditor.getSelectionEnd(), 0);
int left = Math.min(start, end);
int right = Math.max(start, end);
textEditor.getText().replace(left, right, text, 0, text.length());
}
}
}
} }
} }
} }

Loading…
Cancel
Save