java - Android4.4 无法处理带有 "vnd.android-dir/mms-sms"的短信 Intent

标签 java android android-intent sms android-4.4-kitkat

我的应用程序有一个启动默认短信 Activity 的按钮, 除了新版本 Android 4.4(kitkat) 之外,它在所有 android 版本上都运行良好 这是代码:

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) }

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

最佳答案

要启动带有填充号码的 SMS 应用,请使用操作 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

关于java - Android4.4 无法处理带有 "vnd.android-dir/mms-sms"的短信 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19853220/

相关文章:

java - 为什么我们将无状态 bean 称为 session bean,为什么不称为无 session bean

Java 同步和可重入锁定

java - 如何在 Java 中使用 Bigdecimal 数学运算获取值

android - 无需登录即可创建 Facebook 访问 token

Android:从 View 中触发 Intent

java - 如何 xi :include from different jar?

android - 如何减少 RecyclerView 中 CardView 中卡片之间的空间?

android - GoogleMap .zIndex 参数问题

java - Android studio - 努力从应用程序 Assets 共享图像/音频/视频文件

java - 通过 intent linkedin 共享因权限被拒绝而崩溃