尝试发送短信提示“完成操作使用”对话框,但消息应用程序不在列表中?

时间:2010-11-27 02:07:41

标签: android sms android-widget

我正在尝试打开消息传递应用程序以从小部件启动短信但是当我启动活动时,我得到了“使用完整操作”对话框,其中包含很长的应用程序列表,但我看不到消息传递应用程序,我认为应该是尝试发送短信的默认设置。

这是我的代码:

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 :(得分:0)

最有可能的是,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直接发送短信,则只需要这样做。

Here is a project演示了上述Intent语法,并直接使用SmsManager,作为如何向联系人列表中的联系人发送短信的选项。

答案 1 :(得分:0)

我尝试过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);