Android _联系人数据库中的ID列
我了解到不同表中的不同条目通过该表中的_ID列链接。例如,一个联系人可能有一个_ID=1 I get viaAndroid _联系人数据库中的ID列,android,contactscontract,Android,Contactscontract,我了解到不同表中的不同条目通过该表中的_ID列链接。例如,一个联系人可能有一个_ID=1 I get via ContactsContract.Contacts._ID 现在我想用电脑读取联系人的电话号码 Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.C
ContactsContract.Contacts._ID
现在我想用电脑读取联系人的电话号码
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId , null, null);
//...
String number = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
String id = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone._ID));
这很好,但我希望的是,如果联系人的_ID是1,那么电话号码的_ID也是1,因为它们属于一起,但它们并不相等。所以问题是Android如何匹配这些条目
谢谢,A.一个联系人对应一个或多个原始联系人。触点的实际数据存储为
ContactsContract.Contacts.Data
每个数据项都包含它所属的原始联系人的id。
每个原始联系人都包含其所属联系人的id
因此,给定一个联系人id,您可以找到它代表的原始联系人。获取原始联系人ID,然后查找此联系人中的数据。您可以在查看数据库表时获得更多详细信息 据我所知,这是我从使用sqlite3 db浏览器查看android contacts2.db文件中获得的信息 我创建了大约6个联系人来测试我的android联系人 在contacts表中,联系人id和原始联系人id实际上是相同的(这意味着contacts contract.contacts provider) 在数据表中,我们使用mimetype Id作为where条件来获得此人的真实详细信息,如电话号码、电子邮件、名字和姓氏 在考虑数据表时,使用原始联系人id作为获取联系人特定记录的where条件 例如,我的原始联系人id为1 我在data1列中得到了3行,包括电子邮件、电话和显示名称 您可能会问,如果我们只需要电话、电子邮件或显示名称,您将需要mimetype_id作为where条件 要获取电话号码,mimetype_id为5 要获取显示名称,mimetype\u id为6 获取电子邮件mimetype_id为1 如果你是初学者,你可能不理解所有这些东西……但是一旦你看到内部表格,你就会明白我告诉你的每一件事 只能通过联系人id或原始联系人id访问联系人详细信息,而不是通过每个表中的联系人id。该列的用途不同 你可以看看我在这张图上说了些什么