当我从我的应用程序发送任何短信或根本不记录它时,我想隐藏我已发送的项目。
这是我这里的代码:
SmsManager smsManager = SmsManager.getDefault();
PendingIntent piSent = PendingIntent.getBroadcast(contextUpdate, 0, new Intent("SMS_SENT"), 0);
PendingIntent piDelivered = PendingIntent.getBroadcast(contextUpdate, 0, new Intent("SMS_DELIVERED"), 0);
smsManager.sendTextMessage(alarmNumber, null, alarmCode + " " + sentDisarmCode + " OFF", piSent, piDelivered);
如果我没有错误地跳过保存发送的短信,我必须将 null 写入 piSent
和 piDelivered
。但我需要这 2 个广播,所以我知道我的消息是否由我拥有的 Toast 消息发送,并知道它是否已发送。
还有什么我应该尝试的吗?
最佳答案
看来您正在处理 KitKat 或更高版本,因为在此之前,任何使用 SmsManager
发送 SMS 的应用程序都需要明确地将消息写入 Provider,以便它们出现在任何其他应用程序中.在这种情况下,您的应用程序需要成为默认的短信应用程序才能“隐藏”已发送的消息。从 KitKat 开始,任何非默认应用程序和使用 SmsManager
方法发送消息的应用程序都会由系统自动将这些消息写入 Provider。 PendingIntents 仅用于 Sent 和 Delivered 的确认,与消息的写入无关。
另一方面,默认的 SMS 应用负责自己编写所有外发消息。它没有自动写入,它可以选择忽略它们。您可以引用以下链接,了解有关如何使您的应用有资格成为默认短信应用的信息。
关于android - 发送短信但不在已发送的消息中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26092680/