何度かグーグルで検索しましたが、探しているものが見つかりませんでした。Androidは各SMSメッセージにIDを割り当てます。このIDが常に一意であるかどうかを知りたいですか?SMSメッセージを識別するためにそれを信頼できますか、それとも自分で割り当てる必要がありますか?
ありがとう :)
何度かグーグルで検索しましたが、探しているものが見つかりませんでした。Androidは各SMSメッセージにIDを割り当てます。このIDが常に一意であるかどうかを知りたいですか?SMSメッセージを識別するためにそれを信頼できますか、それとも自分で割り当てる必要がありますか?
ありがとう :)
のソースコードを確認し、メソッド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
SMSメッセージに割り当てられているのはPRIMARY KEY
そうです、それは各SMSメッセージを一意に識別します。
SMS_IDはすべてのメッセージで常に一意ですが、すべての会話に共通するThread_IDという名前の別の列もあります。つまり、Androidスマートフォンでの会話では、一意のThread_Idが指定されています。ただし、その特定のスレッド内の各メッセージには一意のSMS_IDがあります。
リレーショナルデータベースであるSQLiteを使用しているため、重複する識別子を持つことはできません。