電話の SMS 受信トレイから SMS に対応する連絡先の詳細を見つけようとしています。私の理解では、列は の列person
への外部キーです。_id
ContactsContract.Contacts
私の問題はperson
、SMS クエリからの値に対して間違った値を取得していることです。一部のperson
ID は連絡先テーブルに存在せず、一部はまったく別の連絡先を指しています。
以下は、値のリストを取得するために使用するコードですperson
。何かを見逃したか、同様の問題に直面したかどうか、誰か教えてください。
Android 4.1.2 を搭載した Nexus S でテスト済み
Uri parsedUri = Uri.parse("content://sms/inbox");
String[] projection = new String[] { "_id", "address", "person" };
Cursor cursor = contentResolver.query(parsedUri, projection, null, null, null);
Log.d(TAG, "Total Count " + cursor.getCount());
if (cursor.getCount() > 0) {
// String address;
int person;
int personIndex = cursor.getColumnIndex("person");
if (cursor.moveToFirst())
do {
person = cursor.getInt(personIndex);
if (person > 0) {
// Add this id to a list
}
} while (cursor.moveToNext());
}
cursor.close();
Android Developer Portal
更新: ( http://developer.android.com/guide/topics/providers/contacts-provider.html )からいくつかのドキュメントを見ていましたperson
が、SMS 受信トレイから取得した ID が参照している可能性はありますか?私がしたようにContactsContract.RawContacts
代わりにContactsContract.Contacts
。