Java 在Android API级别8中,什么';s";“人”;“中的列”;content://sms/inbox" 匹配到?

Java 在Android API级别8中,什么';s";“人”;“中的列”;content://sms/inbox" 匹配到?,java,Java,我查询Uri:“content://sms/inbox“用于阅读收件箱短信。然后我返回了这两个marjor列(还有其他与我的问题无关的列,所以我跳过它们): *地址-来自此人的电话号码 *person-一个id值。我认为它应该映射到Uri“ContactsContract.Contacts.CONTENT\uURI”中的*id列 然后我通过条件“id=person”查询Uri:ContactsContract.Contacts.CONTENT\u Uri,希望得到联系人的显示名,对于某些人来说,

我查询Uri:“content://sms/inbox“用于阅读收件箱短信。然后我返回了这两个marjor列(还有其他与我的问题无关的列,所以我跳过它们): *地址-来自此人的电话号码 *person-一个id值。我认为它应该映射到Uri“ContactsContract.Contacts.CONTENT\uURI”中的*id列

然后我通过条件“id=person”查询Uri:ContactsContract.Contacts.CONTENT\u Uri,希望得到联系人的显示名,对于某些人来说,它是有效的,但对于许多人来说它不是——然后我深入挖掘,发现联系人Uri中有一列“raw\u contact\u id”,对于那些未映射的person值,它实际上映射到了这个“raw\u contact\u id”价值观


我想知道为什么会发生这种情况?对于联系人查找,id不应该是唯一的吗?或者我是否错过了通过这个*person值进行完整查询以获取显示名称的功能

Person列是_id,不考虑电话同步问题。有多个帐户联系人,您必须确保选择了正确的帐户类型,然后查询给定值的contacts.Contract。您也可以尝试查找密钥以提供更多信息。 有关信息,请参阅