У меня есть приложение, которое отправляет сообщения в указанный контакт. Прямо сейчас я использую
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");
Они все, кажется, работают точно то же над эмулятором и над моим устройством, и я ничто не мог найти официальным о корректном, обычно поддерживаемом пути. Какие-либо идеи?
Я попробую посмотреть, как они сделали это в приложении Контакты.
В прошлом у меня было много проблем с совместимостью с HTC Hero. В итоге я всегда писал код, который работал на телефонах с пользовательским интерфейсом Sense. Я обнаружил, что если код работает там, то он будет работать на любом устройстве android :).
Намерение описывает ваше намерение. Что вы хотите сделать? Посмотрите документацию по намерению 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.