在我们开始之前,我知道 SMS 内容提供者是无证的。我知道不推荐使用它。
由于无论如何我都在使用它,所以我想要一些帮助来实现我的目标之一。我目前能够毫无问题地添加和删除消息。在我删除了整个线程并尝试恢复它之后,问题就出现了。消息在数据库中,(如果我尝试再次添加它们,我会收到错误消息,
android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19)
所以我知道消息在那里。)但是如果我打开消息应用程序,它们不会显示。
如果我从线程中删除除一条消息之外的所有消息,则恢复的消息会很好地显示在他们的线程中。关于为什么我无法创建新消息线程的任何想法?
Uri allSmsUri = Uri.parse("content://sms/");
.
getContentResolver().delete(allSmsUri, "_id = ?", new String[] { m.get_id() });
.
ContentValues values = new ContentValues();
values.put("person", m.getPerson());
values.put("_id", m.get_id());
values.put("thread_id", m.getThread_id());
values.put("body", m.getBody());
values.put("address", m.getAddress());
values.put("read", m.getRead());
values.put("date", m.getDate());
values.put("type", m.getType());
values.put("date_sent", m.getDate_sent());
values.put("protocol", m.getProtocol());
values.put("status", m.getStatus());
values.put("reply_path_present", m.getreply_path_present());
values.put("subject", m.getSubject());
values.put("service_center", m.getservice_center());
values.put("locked", m.getLocked());
values.put("error_code", m.getError_code());
values.put("seen", m.getSeen());
getContentResolver().insert(allSmsUri, values);