我的计划是通过其thread-id打开一个SMS-Conversation Thread。我的代码是:
long threadId = Long.parseLong(THREAD_ID);
Intent defineIntent = new Intent(Intent.ACTION_VIEW);
defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+threadId));
context.startActivity(defineIntent);
但我收到以下错误:
09-27 16:01:07.696:ActivityNotFoundException:找不到任何活动 处理Intent {act = android.intent.action.VIEW dat = content:// mms-sms / conversations / 3}
任何人都可以帮我解决这个问题吗?提前谢谢。
J Doe;)
答案 0 :(得分:3)
我自己找到了解决方案。它起作用,因为来自一个特定Number的每个msg都来自一个线程。如果您使用“新的短信 - 意图”与您收到短信的号码(不是联系人姓名),它将打开整个会话。
只需一行:
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "SMS_NUMBER_AS_STRING_HERE", null)));
答案 1 :(得分:1)
这是对answer of J. Doe的改进。
使用"SMS_NUMBER_AS_STRING_HERE"
不是一个完整的解决方案。您必须获取列Telephony.Sms.ADDRESS
的值并使用它而不是数字。
另一项更正是为意图设置默认SMS包。这需要有两个原因:
避免系统'选择应用程序'对话框。
只有默认的短信应用可以发送短信,因此如果用户选择其他应用,它可能会收到错误消息(就像我使用环聊一样),尽管您使用ACTION_VIEW
意图。
这是我的代码:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", address, null));
intent.setPackage(Telephony.Sms.getDefaultSmsPackage(context));