Я пытаюсь найти способ отправить MMS-сообщение, содержащее вложение vCard . Я думал, что это будет довольно простой задачей, но мне так и не удалось придумать что-то, что просто работает на самых разных телефонах Android.
Первое, что я попробовал, было так:
Определить намерение, показывающее список приложений, способных отправлять vCard
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/x-vcard");
i.putExtra(Intent.EXTRA_TEXT,"MMS with vCard");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse (someFilereference);
startActivity(Intent.createChooser(i, "Select MMS application."));
При использовании этого я заметил следующее:
- На Samsung Galaxy S , этот выбор позволил мне выбрать Bluetooth, Gmail и приложение обмена сообщениями . При использовании приложения «Сообщения» вложение и текст присутствовали, и я мог отправить MMS. Я обработал MMS на старом телефоне Sony Ericson (до Android), и vCard была обработана нормально.
- На Google Nexus S и Motorola DroidX выбор позволял мне выбирать только Bluetooth и Gmail. ( Приложение обмена сообщениями отсутствовало в списке выбора ).
(Мой вывод). Похоже, что в Android нет стандартного приложения, которое способно удовлетворить намерение, указанное здесь. (ни одно приложение не позволяет использовать текст / x-vcard mimeType). Galaxy S поставляется с собственным приложением для обмена сообщениями, которое способно обрабатывать vime mimetype.
Это все очень хорошо, но как нам поступить и решить это?
Я попробовал следующий подход:
Запустить функцию обмена сообщениями напрямую, указав класс
Intent intent = new Intent(Intent.ACTION_SEND);
i.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
i.setType("text/x-vcard");
i.putExtra("sms_body", "SomeText");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse (someFileRef);
startActivity(i);
Используя этот код, приложение для обмена сообщениями запускается напрямую. Этот подход был выбран, так как он, по крайней мере, позволяет нам загружать приложение обмена сообщениями на Nexus S (до этого с приложением выбора не было приложения обмена сообщениями).
На Samsung Galaxy S вложение добавляется на экран составления MMS и отправляется правильно.
На Google Nexcus S вложение отсутствует.
При удалении mimeType из Intent приложение Messaging выводит сообщение об ошибке Неподдерживаемый тип носителя .
Поэтому возникает вопрос: есть ли простой и единообразный фрагмент кода, который позволяет отправлять MMS с вложением vCard?