Отправка MMS с вложением vCard на устройствах Android - PullRequest
4 голосов
/ 26 марта 2011

Я пытаюсь найти способ отправить 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?

...