Android 以编程方式插入的短信在消息应用程序中的时间戳不正确

标签 android

我曾尝试使用未记录的内容提供者(content://sms)向收件箱插入一条短信,插入成功。然后我在消息应用程序中检查新插入的消息,但是显示的时间始终是插入完成的实时时间,而不是我在 ContentValues 中指定的时间。单击并查看消息线程后,时间将更新为我在 ContentValues 中设置的值。我错过了什么吗?求助,万分感谢

她是我代码的一部分

Uri uri = Uri.parse("content://sms");
ContentValues cv = new ContentValues();
cv.put("address", "99912345");
cv.put("date", 1309632433677);
cv.put("read", 1);
cv.put("type", 1);
cv.put("subject", null);
cv.put("body", "Testing message");
getContentResolver().insert(uri, cv);

最佳答案

问题在于这是一个未记录的非官方 API,因此理论上您可能不应该使用它。在实践中,如果你想使用它,你必须做好准备让谷歌在 J 或更高版本中破坏你的软件。

综上所述,事实证明有一个解决方法。当您插入一条消息时,会将线程的日期戳设置为插入时间。但是,当您从线程中删除消息时(由“content://sms”提供程序中的“地址”字段标识),它必须重新计算线程日期戳。因此,对于您向其中填充内容的每个线程,也向其中填充另一个虚拟消息,然后将其删除。这很容易,因为 insert 方法返回一个 Uri,您可以对其调用 delete 方法。我怀疑这是非常低效的。

关于Android 以编程方式插入的短信在消息应用程序中的时间戳不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903885/

相关文章:

android - 如何向servlet发送大量数据

Android 基础知识 : running code in the UI thread

java - 是否有任何开源 “MSWord doc to PDF” 转换库可用

android - 如何轻松地将 eclipse android 项目导入 Intellij IDEA 10

android - 由于 newrelic 异常,应用程序在 onCreate 中崩溃

android - 单击后退按钮后重新创建 Activity 状态

android - 关于android中最大堆大小和可用内存的两个问题

java - 菜单工具栏显示在错误的 fragment 中

Android CursorLoader 带有选择和selectionArgs[]

android - res/drawable中有很多图片文件,Android中如何访问?