java - 在 Android 中将消息保存到收件箱?

标签 java android sms

我使用 SMSManager 发送消息,我可以发送消息,但我想将其保存在消息对话中(设备中的默认消息应用程序)?

我所做的是

ContentValues values = new ContentValues();
values.put("address", "123456789");
values.put("body", "foo bar");
getContentResolver().insert(Uri.parse("content://sms/sent"), values);

我可以将其添加到收件箱中,但是

正如 here 的 CommansWare 评论,

The SMS content provider is not part of the Android SDK. Your code will break on devices that replace the SMS client with their own. Your code may break in future versions of Android

我没有设备来测试最新版本,所有 Android 版本的解决方案是什么?

最佳答案

内容 uri 不是 Android sdk 的一部分。虽然我还没有看到任何设备使用短信提供商的替代 uri,但它可能是其中之一。我认为 Google 将来将这个 uri 字符串更改为另一个字符串的可能性很小。但供应商也可以修改它。因此,一般来说,没有适用于所有 Android 版本的 Elixir 。

正如 PLB 所说,您可以向您的应用程序添加一些更新和错误报告功能。当设备更新到具有不同提供商的版本时,请通知用户,如果您创建了处理更改的新应用程序,请要求您的客户下载一个。如果您的代码无法读取/写入当前 uri。向您报告有关设备的一些信息。所以你将能够修复它。

我首先想到也许你可以自动查找com.android.providers.telephony.SmsProvider的字节码(dex字节码)。但是,这也不属于 Android sdk。

关于java - 在 Android 中将消息保存到收件箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974150/

相关文章:

Java Canvas绘制图像闪烁

java - 无法访问我在 PC 上的 Android 应用程序中创建的文件

java - 无法使用 nexmo 或 thilio 发送短信

Android 以编程方式发送短信

java - Telnet session 与 TCP session

java - Selenium 自动元素点击返回 null

java - Hibernate + JPA无法为子类映射不同的id

Android DatePicker 问题

Android Espresso 测试套件

java - 发送短信数据时 onReceive 不会被调用