каково различие между ACTION_SENDTO и ACTION_VIEW при отправке SMS?

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

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");

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

9
задан shoren 27 July 2010 в 05:56
поделиться

2 ответа

Я попробую посмотреть, как они сделали это в приложении Контакты.

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

-1
ответ дан 5 December 2019 в 02:07
поделиться

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

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

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

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

3
ответ дан 5 December 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: