diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e9ff29ec7..811ab2c36 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -154,13 +154,17 @@ - + + + + + diff --git a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java index 68411c569..55178ef67 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java @@ -1,25 +1,29 @@ /** TODO: make this lightweight, don't extend the entire MainActivity */ package com.todoroo.astrid.activity; -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 java.util.ArrayList; + +import javax.inject.Inject; + import timber.log.Timber; +import static com.google.common.collect.Lists.newArrayList; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow; +import static org.tasks.intents.TaskIntents.getEditTaskStack; + /** * @author joshuagross *

Create a new task based on incoming links from the "share" menu @@ -54,7 +58,6 @@ 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(action)) { CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT); @@ -62,18 +65,32 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity { Task task = taskCreator.createWithValues(null, text.toString()); getEditTaskStack(this, null, task).startActivities(); } - } else if (Intent.ACTION_SEND.equals(action)) { + } else if (action.equals(Intent.ACTION_SEND) || action.equals(Intent.ACTION_SEND_MULTIPLE)) { String subject = intent.getStringExtra(Intent.EXTRA_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); - } + task.putTransitory(TaskAttachment.KEY, getAttachments(intent)); getEditTaskStack(this, null, task).startActivities(); } else { Timber.e("Unhandled intent: %s", intent); } finish(); } + + private ArrayList getAttachments(Intent intent) { + String type = intent.getType(); + if (type != null) { + String action = intent.getAction(); + if (action.equals(Intent.ACTION_SEND)) { + if (type.startsWith("image/")) { + return newArrayList(intent.getParcelableExtra(Intent.EXTRA_STREAM)); + } + } else if (action.equals(Intent.ACTION_SEND_MULTIPLE)) { + if (type.startsWith("image/")) { + return intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); + } + } + } + return new ArrayList<>(); + } } diff --git a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index db4bc55b4..eaf5310a4 100644 --- a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -28,6 +28,8 @@ import org.tasks.injection.FragmentComponent; import org.tasks.preferences.Preferences; import org.tasks.ui.TaskEditControlFragment; +import java.util.ArrayList; + import javax.inject.Inject; import androidx.annotation.Nullable; @@ -77,7 +79,9 @@ public class FilesControlSet extends TaskEditControlFragment { if (savedInstanceState == null) { if (task.hasTransitory(TaskAttachment.KEY)) { - copyToAttachmentDirectory(task.getTransitory(TaskAttachment.KEY)); + for (Uri uri : (ArrayList) task.getTransitory(TaskAttachment.KEY)) { + copyToAttachmentDirectory(uri); + } } }