Фильтр намерений Android: добавить вложение в сообщение SMS/MMS

Какое намерение срабатывает, когда пользователь пытается добавить вложение к сообщению SMS/MMS? Я пробовал это, и ни один из них не работает:

GET_CONTENT с категорией DEFAULT и mimeType "/" PICK с категорией DEFAULT и mimeType "/"

Я также пробовал вышеописанное с категориями OPENABLE и BROWSABLE.

Я не могу найти это задокументировано НИГДЕ. Похоже, это не то же самое, что и фильтр вложений электронной почты.

Просто чтобы уточнить, я говорю о добавлении моего приложения в качестве опции в диалоговое окно, которое появляется, когда пользователь пытается что-то прикрепить к сообщению SMS или MMS.


person dave paola    schedule 13.12.2011    source источник


Ответы (2)


Обычно пользователь делает это, чтобы добавить изображение в MMS:

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.putExtra("sms_body", "some text"); 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));
sendIntent.setType("image/png");

Итак, вы должны зарегистрировать свою активность для ACTION_SEND action.

Вы также можете отфильтровать намерения, к которым прикреплено изображение, с помощью фильтра mime="image/png":

<intent-filter android:icon="drawable resource"
           android:label="string resource"
           android:priority="integer" >
    <action android:name="ACTION_SEND" />
    <data android:mimeType="image/png"/>
</intent-filter>

Обновление:

Чтобы увидеть, как приложение MMS добавляет вложения, см. этот код: http://www.google.com/codesearch#cZwlSNS7aEw/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java&exact_package=android&q=AttachmentTypeSelectorAdapter&type=cs&l=2415

В большинстве случаев ваше приложение должно зарегистрировать действие ACTION_GET_CONTENT.

person Peter Knego    schedule 13.12.2011
comment
Это не добавляет мое приложение в список приложений, которые пользователь может выбрать при добавлении вложения. Вот что мне нужно. - person dave paola; 13.12.2011
comment
Ах, извините. Я неправильно понял ваш вопрос. Обновил ответ (надеюсь) полезной ссылкой. - person Peter Knego; 13.12.2011
comment
Ах. Диалоговое окно вложения фактически не запускает Intent, пока не выбран тип вложения. Я продолжал ожидать, что мое приложение появится в этом первом диалоговом окне, а не во втором. - person dave paola; 13.12.2011
comment
@Peter Knego Предлагаемая выше ссылка не работает. Ответ все еще работает? - person AJW; 21.04.2020

Оказывается, диалоговое окно вложения не является намерением, как вложение электронной почты. Это промежуточный диалог, который управляет типом вложения.

В моем случае выбор типа, соответствующего типу MIME (например, image/png), запускает намерение и показывает мое приложение как один из вариантов.

Спасибо Peter Knego за ссылку на источник Android.

person dave paola    schedule 13.12.2011