diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9859236d5..e9ff29ec7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -158,7 +158,8 @@ - + + 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 c8080230a..68411c569 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java @@ -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); 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 b6f854321..db4bc55b4 100644 --- a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -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) { diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java index de1032b23..8317909f1 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java @@ -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: diff --git a/app/src/main/java/org/tasks/data/TaskAttachment.java b/app/src/main/java/org/tasks/data/TaskAttachment.java index f53d0894a..2ec8a6a9c 100644 --- a/app/src/main/java/org/tasks/data/TaskAttachment.java +++ b/app/src/main/java/org/tasks/data/TaskAttachment.java @@ -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 */ diff --git a/app/src/main/java/org/tasks/files/FileHelper.java b/app/src/main/java/org/tasks/files/FileHelper.java index ba3f3a3ef..ada69f6a0 100644 --- a/app/src/main/java/org/tasks/files/FileHelper.java +++ b/app/src/main/java/org/tasks/files/FileHelper.java @@ -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);