В чем разница между ACTION_SENDTO и ACTION_VIEW при отправке смс? - PullRequest
9 голосов
/ 27 июля 2010

У меня есть приложение, которое отправляет сообщения указанному контакту. Прямо сейчас я использую

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + phoneNumber));

для отправки сообщений, и он прекрасно работает на эмуляторе и на моем N1. Я получил жалобы от пользователей HTC невероятно, что они получают силу от приложения android.mms, когда они его используют. Я больше копался и вижу много способов отправки сообщений. Например

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber));

А также

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("address", phoneNumber);
intent.setType("vnd.android-dir/mms-sms");

Кажется, все они работают одинаково на эмуляторе и на моем устройстве, и я не смог найти ничего официального о правильном, общепринятом способе. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 27 июля 2010

Намерение описывает ваше намерение. Что ты хочешь делать? Ознакомьтесь с документацией о намерениях http://developer.android.com/reference/android/content/Intent.html

В вашем случае вы хотите что-то отправить, поэтому ACTION_SENDTO определенно звучит намного более подходящим, чем ACTION_VIEW (который используется для просмотра существующей записи).

К сожалению, нет официального реестра для того, какие намерения доступны - бесстрашные ребята из OpenIntents запустили реестр в стиле Wiki на http://www.openintents.org/en/intentstable,, но он краудсорсинг и очень неполный. В конце концов, речь идет о том, как приложение, которое поддерживает намерение, обрабатывает его.

В вашем случае стандартное приложение обмена сообщениями Android обрабатывает ACTION_VIEW, а пользовательское приложение HTC - нет. Мой лучший совет - использовать ACTION_SENDTO, обрабатывать исключение и отображать сообщение об ошибке. Помните, что у пользователя могут быть установлены сторонние SMS-приложения.

0 голосов
/ 27 июля 2010

Попробую посмотреть, как они это делали в приложениях Contacts .

В прошлом у меня было много проблем с совместимостью с HTC Hero. Я всегда заканчивал тем, что писал код, который работал на телефонах с интерфейсом Sense. Я обнаружил, что если код работает там, он будет работать на каждом устройстве Android:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...