Handle send intents with images

pull/795/head
Alex Baker 6 years ago
parent 3ca0a04f1a
commit e0dadacad6

@ -158,7 +158,8 @@
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="text/plain" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>

@ -5,13 +5,19 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static org.tasks.intents.TaskIntents.getEditTaskStack;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskCreator;
import javax.inject.Inject;
import org.tasks.data.TaskAttachment;
import org.tasks.files.FileHelper;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import timber.log.Timber;
/**
@ -22,6 +28,7 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity {
@Inject TaskCreator taskCreator;
@Inject TaskDao taskDao;
@Inject Preferences preferences;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -46,21 +53,23 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity {
private void readIntent() {
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (atLeastMarshmallow() && Intent.ACTION_PROCESS_TEXT.equals(intent.getAction())) {
if (atLeastMarshmallow() && Intent.ACTION_PROCESS_TEXT.equals(action)) {
CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
if (text != null) {
Task task = taskCreator.createWithValues(null, text.toString());
getEditTaskStack(this, null, task).startActivities();
}
} else if (Intent.ACTION_SEND.equals(intent.getAction())) {
} else if (Intent.ACTION_SEND.equals(action)) {
String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
if (subject == null) {
subject = "";
}
Task task = taskCreator.createWithValues(null, subject);
task.setNotes(intent.getStringExtra(Intent.EXTRA_TEXT));
if (type.startsWith("image/")) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
task.putTransitory(TaskAttachment.KEY, uri);
}
getEditTaskStack(this, null, task).startActivities();
} else {
Timber.e("Unhandled intent: %s", intent);

@ -74,6 +74,13 @@ public class FilesControlSet extends TaskEditControlFragment {
for (TaskAttachment attachment : taskAttachmentDao.getAttachments(taskUuid)) {
addAttachment(attachment);
}
if (savedInstanceState == null) {
if (task.hasTransitory(TaskAttachment.KEY)) {
copyToAttachmentDirectory(task.getTransitory(TaskAttachment.KEY));
}
}
return view;
}
@ -154,10 +161,7 @@ public class FilesControlSet extends TaskEditControlFragment {
@SuppressLint("NewApi")
private void showFile(final TaskAttachment m) {
final Uri uri = m.parseUri();
if (uri != null) {
FileHelper.startActionView(getActivity(), uri);
}
FileHelper.startActionView(getActivity(), m.parseUri());
}
private void copyToAttachmentDirectory(Uri input) {

@ -31,6 +31,7 @@ import org.tasks.data.Tag;
import org.tasks.data.TagDao;
import org.tasks.data.TagData;
import org.tasks.data.TagDataDao;
import org.tasks.data.TaskAttachment;
import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences;
import timber.log.Timber;
@ -151,9 +152,8 @@ public class TaskCreator {
tags.add((String) value);
break;
case GoogleTask.KEY:
task.putTransitory(key, value);
break;
case CaldavTask.KEY:
case TaskAttachment.KEY:
task.putTransitory(key, value);
break;
default:

@ -18,6 +18,8 @@ public final class TaskAttachment {
@Deprecated public static final Table TABLE = new Table("task_attachments");
public static final String KEY = "attachment";
@Deprecated
public static final Property.LongProperty ID = new Property.LongProperty(TABLE, "_id");
/** default directory for files on external storage */

@ -135,6 +135,10 @@ public class FileHelper {
}
public static void startActionView(Activity context, Uri uri) {
if (uri == null) {
return;
}
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String filename = getFilename(context, uri);
String extension = Files.getFileExtension(filename);

Loading…
Cancel
Save