【问题标题】:Android open specific SMS-Thread by its Thread-IDAndroid 通过其 Thread-ID 打开特定的 SMS-Thread
【发布时间】:2017-02-05 08:48:06
【问题描述】:
我的计划是通过它的线程 ID 打开一个 SMS 对话线程。我的代码是:
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: 找不到活动
处理意图 { act=android.intent.action.VIEW
dat=content://mms-sms/conversations/3 }
谁能帮我解决这个问题?提前致谢。
J Doe ;)
【问题讨论】:
标签:
java
android
android-intent
sms
【解决方案1】:
我自己找到了解决方案。它之所以有效,是因为来自一个特定数字的每个味精都来自一个线程。如果您将“new-sms-intent”与您收到短信的号码(而不是联系人姓名)一起使用,它将打开整个对话。
只有一行:
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "SMS_NUMBER_AS_STRING_HERE", null)));
【解决方案2】:
这是对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));