【问题标题】:How to open specific conversation in default sms app in Android 6 (api 23)如何在 Android 6 (api 23) 的默认短信应用中打开特定对话
【发布时间】:2016-07-27 12:33:14
【问题描述】:

我正在使用此答案中的代码:How to open specific sms in Android,它运行良好。

但在装有 Android 6.0 (apiVerion >= Build.VERSION_CODES.M) 的设备上,我的应用程序崩溃了。

崩溃日志:

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT] dat=content://mms-sms/conversations/50 flg=0x10000000 }

如何使它适用于这个 Android 版本?

【问题讨论】:

  • 我猜是因为许可。您应该在 android 6.0 及更高版本的运行时处理 SMS 权限。 :) 请检查this
  • @SripadRaj 谢谢你-这是很好的猜测,但这不是问题。我确定我已授予 READ_SMS 权限。为了找出对话threadId,我在收到的短信中搜索特定文本,找到后我在默认应用程序中打开它。如果我有权限问题,我将无法首先找到 threadId。而且整个短信相关的代码都在这个条件内:if (ActivityCompat.checkSelfPermission(App.context, android.Manifest.permission.READ_SMS) == PackageManager.PERMISSION_GRANTED) {你还有其他猜测吗?
  • 我猜它无法正确解决意图。也许尝试将类型设置为这样的意图? intent.setType("vnd.android-dir/mms-sms");
  • 不走运。它仍然不起作用。不过还是谢谢你。

标签: android sms


【解决方案1】:

我找到了解决方法:我不在默认应用中通过 SMS 线程的 id 打开 SMS Conversation,而是通过 电话号码。它在 Android 6 中以这种方式工作。

Intent androidSix = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "phone_number_in_string", null));
startActivity(androidSix);

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多