Per spec, allow all attachments to be added via INTENT.

* Change manifest intent-filter to */*
* Split incoming whitelist into send_ui and send_intent versions

Bugs:  2097457 (general) & 2138790 (.vcf)

Change-Id: Id4a2bb3a75808811578c643a7b841de9491efce4
This commit is contained in:
Andrew Stadler 2009-09-27 23:49:10 -07:00
parent e6a8d98e9e
commit 92a1ff9b77
3 changed files with 19 additions and 14 deletions

View File

@ -162,9 +162,7 @@
</intent-filter> </intent-filter>
<intent-filter android:label="@string/app_name"> <intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain" /> <data android:mimeType="*/*" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
<intent-filter android:label="@string/app_name"> <intent-filter android:label="@string/app_name">

View File

@ -67,15 +67,21 @@ public class Email extends Application {
public static final boolean LOGD = false; public static final boolean LOGD = false;
/** /**
* The MIME type(s) of attachments we're willing to send. At the moment it is not possible * The MIME type(s) of attachments we're willing to send via attachments.
* to open a chooser with a list of filter types, so the chooser is only opened with the first
* item in the list. The entire list will be used to filter down attachments that are added
* with Intent.ACTION_SEND.
* *
* TODO: It should be legal to send anything requested by another app. This would provide * Any attachments may be added via Intents with Intent.ACTION_SEND or ACTION_SEND_MULTIPLE.
* parity with Gmail's behavior.
*/ */
public static final String[] ACCEPTABLE_ATTACHMENT_SEND_TYPES = new String[] { public static final String[] ACCEPTABLE_ATTACHMENT_SEND_INTENT_TYPES = new String[] {
"*/*",
};
/**
* The MIME type(s) of attachments we're willing to send from the internal UI.
*
* NOTE: At the moment it is not possible to open a chooser with a list of filter types, so
* the chooser is only opened with the first item in the list.
*/
public static final String[] ACCEPTABLE_ATTACHMENT_SEND_UI_TYPES = new String[] {
"image/*", "image/*",
"video/*", "video/*",
}; };

View File

@ -884,7 +884,7 @@ public class MessageCompose extends Activity implements OnClickListener, OnFocus
private void onAddAttachment() { private void onAddAttachment() {
Intent i = new Intent(Intent.ACTION_GET_CONTENT); Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE); i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType(Email.ACCEPTABLE_ATTACHMENT_SEND_TYPES[0]); i.setType(Email.ACCEPTABLE_ATTACHMENT_SEND_UI_TYPES[0]);
startActivityForResult( startActivityForResult(
Intent.createChooser(i, getString(R.string.choose_attachment_dialog_title)), Intent.createChooser(i, getString(R.string.choose_attachment_dialog_title)),
ACTIVITY_REQUEST_PICK_ATTACHMENT); ACTIVITY_REQUEST_PICK_ATTACHMENT);
@ -1110,7 +1110,8 @@ public class MessageCompose extends Activity implements OnClickListener, OnFocus
String type = intent.getType(); String type = intent.getType();
Uri stream = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); Uri stream = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (stream != null && type != null) { if (stream != null && type != null) {
if (MimeUtility.mimeTypeMatches(type, Email.ACCEPTABLE_ATTACHMENT_SEND_TYPES)) { if (MimeUtility.mimeTypeMatches(type,
Email.ACCEPTABLE_ATTACHMENT_SEND_INTENT_TYPES)) {
addAttachment(stream); addAttachment(stream);
} }
} }
@ -1124,8 +1125,8 @@ public class MessageCompose extends Activity implements OnClickListener, OnFocus
Uri uri = (Uri) parcelable; Uri uri = (Uri) parcelable;
if (uri != null) { if (uri != null) {
Attachment attachment = loadAttachmentInfo(uri); Attachment attachment = loadAttachmentInfo(uri);
if (MimeUtility.mimeTypeMatches(attachment.mMimeType, if (MimeUtility.mimeTypeMatches(attachment.mMimeType,
Email.ACCEPTABLE_ATTACHMENT_SEND_TYPES)) { Email.ACCEPTABLE_ATTACHMENT_SEND_INTENT_TYPES)) {
addAttachment(attachment); addAttachment(attachment);
} }
} }