k9mail/k-9 — pull request #360 by cketti (2013-08-15 18:44:25+00:00)
Title: RFC: Fetch attachments while MessageCompose activity is running

Android allows other apps to access protected content of an app without requesting the
necessary permission when the app returns an Intent with FLAG_GRANT_READ_URI_PERMISSION.
This regularly happens as a result of ACTION_PICK, i.e. what we use to pick content to be
attached to a message. Accessing that content only works while the receiving activity is
running. Afterwards accessing the content throws a SecurityException because of the missing
permission.
This commit changes K-9 Mail's behavior to copy the content to a temporary file in K-9's
cache directory while the activity is still running.

Fixes issue 4847, 5821

This also fixes bugs related to the fact that K-9 Mail didn't save a copy of attached content
in the message database.

Fixes issue 1187, 3330, 4930

--

What's missing; comments/code welcome:
- A way to prevent the user from sending the message while one or more attachments are still being copied
- A way to prevent the user from closing the activity while one or more attachments are still being copied (only if a draft needs to be saved; otherwise we don't care)
- Remove temporary files...
+ when discarding the message
+ after saving as draft
+ after sending the message

Optimizations that would be useful:
- Don't copy the contents of attachments that are already in the message database to a temporary file, e.g. when opening a draft for editing or forwading a message