0

我用谷歌搜索了几次,但找不到我要找的东西。Android 为每条短信分配一个 id。我想知道这个 id 是否总是唯一的?我可以依靠它来识别短信还是应该分配自己的短信?

谢谢 :)

4

3 回答 3

5

查看源代码MmsSmsDatabaseHelper并注意该createSmsTables方法的实现:

private void createSmsTables(SQLiteDatabase db) {
    // N.B.: Whenever the columns here are changed, the columns in
    // {@ref MmsSmsProvider} must be changed to match.
    db.execSQL("CREATE TABLE sms (" +
               "_id INTEGER PRIMARY KEY," +
               "thread_id INTEGER," +
               "address TEXT," +
               "person INTEGER," +
               "date INTEGER," +
               "date_sent INTEGER DEFAULT 0," +
               "protocol INTEGER," +
               "read INTEGER DEFAULT 0," +
               "status INTEGER DEFAULT -1," + 
               "type INTEGER," +
               "reply_path_present INTEGER," +
               "subject TEXT," +
               "body TEXT," +
               "service_center TEXT," +
               "locked INTEGER DEFAULT 0," +
               "error_code INTEGER DEFAULT 0," +
               "seen INTEGER DEFAULT 0" +
               ");");

    /* rest of implementation not shown */
}

_id分配给每条短信的 是是的PRIMARY KEY,它唯一地标识每条短信。

于 2012-06-18T01:18:00.333 回答
3

SMS_ID 对于每条消息始终是唯一的。但是还有另一个名为 Thread_ID 的列对于每个对话都是通用的,即 android 手机中的非常对话给出了唯一的 Thread_Id。但是该特定线程中的每条消息都有一个唯一的 SMS_ID

于 2012-06-18T04:56:47.040 回答
2

由于它使用 SQLite,即关系数据库,因此不可能有重复的标识符。

于 2012-06-18T00:54:31.540 回答