Android4.4 无法使用“vnd.android-dir/mms-sms”来处理短信意图

我的应用程序有一个按钮来启动默认的短信活动,它工作得很好,所有Android版本,除了新的一个,Android 4.4(kitkat)这是代码:

public void onClick(View arg0) {
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    smsIntent.putExtra("address", member.getPhoneNumber().trim());
    context.startActivity(smsIntent);
}

我收到错误消息

11-08 02:08:32.815: E/AndroidRuntime(14733): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW typ=vnd.android-dir/mms-sms (has extras) }

我知道谷歌对默认短信应用程序处理短信意图的方式进行了一些更改。但我的应用程序不是短信应用程序,但它只具有使用收件人号码启动默认短信应用程序的功能。所以请帮忙。


答案 1

要启动填充了号码的短信应用程序,请使用操作:ACTION_SENDTO

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

这将适用于Android 4.4。它也应该适用于早期版本的Android,但是由于API从未公开过,因此行为可能会有所不同。如果你之前的方法没有问题,我可能会坚持使用4.4之前的方法,并使用4.4 +。ACTION_SENDTO


答案 2

要启动短信应用程序而不插入号码,则应删除setType

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("sms:"));
intent.putExtra("sms_body", "smsMsgVar");
startActivity(intent);

推荐