При попытке отправить SMS-сообщение выводится диалоговое окно «Выполнить действие с помощью», но приложения для обмена сообщениями нет в списке? - PullRequest
1 голос
/ 27 ноября 2010

Я пытаюсь отправить откройте приложение обмена сообщениями, чтобы запустить смс-сообщение от виджета, но когда я запускаю действие, я получаю диалоговое окно «Выполнить действие с помощью» с длинным списком приложений, но я не вижуприложение для обмена сообщениями, которое, я думаю, должно быть приложением по умолчанию для отправки смс-сообщений.

Вот мой код:

public void onUpdate(Context context,
     AppWidgetManager appWidgetManager, int[] appWidgetIds) {

   Intent sendIntent = new Intent(Intent.ACTION_VIEW);
   PendingIntent smsIntent1 = PendingIntent.getActivity(context, 0, sendIntent, 0);
   sendIntent.putExtra("address", "8017777777");
   sendIntent.setType("vnd.android-dir/mms-sms");
   views.setOnClickPendingIntent(R.id.sms_btn1, smsIntent1);

   appWidgetManager.updateAppWidget(appWidgetIds, views); 
  super.onUpdate(context, appWidgetManager, appWidgetIds); 

}

, и мой манифест содержит это:

<uses-permission android:name="android.permission.SEND_SMS"/>

Есть идеи?Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2010

Я попробовал то, что сказал CommonsWare, но это не сработало, но оно поставило меня на правильный путь (который использовал Intent.ACTION_SENDTO. Я нашел то, что мне было нужно здесь: http://snipt.net/Martin/android-intent-usage/

Этовот как это выглядело в итоге:

Uri uri = Uri.parse("smsto:0800000123");   
   Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
   it.putExtra("sms_body", "The SMS text");   
   PendingIntent smsIntent1 = PendingIntent.getActivity(context, 0, it, 0);
   views.setOnClickPendingIntent(R.id.sms_btn1, smsIntent1);
0 голосов
/ 27 ноября 2010

Скорее всего, в приложении Messenger есть <intent-filter>, который не охватывает ваш тип MIME.

Я не совсем уверен, почему у вас есть этот тип MIME.Мне также неясно, будет ли это целое Intent работать вообще.Я знаю, что это работает, если предположить, что 8017777777 - это номер телефона:

Intent sms=new Intent(Intent.ACTION_SENDTO, Uri.parse("tel:8017777777"));

sms.putExtra("sms_body", msg.getText().toString());

startActivity(sms);

Обратите внимание, что в этом случае вам не нужно разрешение SEND_SMS.Это необходимо только в том случае, если вы используете SmsManager для прямой отправки SMS.

Это проект , который демонстрирует вышеуказанный синтаксис Intent, плюс прямое использование SmsManagerварианты отправки текстового сообщения контакту в списке контактов.

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