【发布时间】:2018-12-28 09:46:58
【问题描述】:
我正在通过
成功获取联系人 val cursor = context.contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null)
但是当我在我的联系人列表中没有任何联系人并且我在 同步后从 web 端 在 google 帐户 中添加联系人时会出现问题我的手机中的联系人来自这个 xxx@gmail 帐户,所有联系人显示在我的联系人列表中,但是当我尝试 获取联系人 > 然后,它返回 0。
我不知道是什么问题,还有其他方法可以获取此联系人!
如果我插入新联系人而不是从上面 查询 获得此联系人,但无法使用 google 找到我在 web 面板 中添加的那些联系人帐户。
如果您遇到此类问题,请帮助我。
我正在使用以下代码来获取联系人
val cursor = context.contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null)
val projection = arrayOf(ContactsContract.Contacts._ID, ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_URI, ContactsContract.CommonDataKinds.Phone.TYPE)
val alContacts = ArrayList<Contact>()
var mMapContact = JSONObject()
if (cursor!!.moveToFirst()) {
do {
val id = cursor!!.getString(cursor!!.getColumnIndex(ContactsContract.Contacts._ID))
if (Integer.parseInt(cursor!!.getString(cursor!!.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
val pCur = context.contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", arrayOf<String>(id), ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC")
var mListMobile = ArrayList<MobileType>()
var mNameContact = ""
while (pCur!!.moveToNext()) {
val number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
mNameContact = pCur!!.getString(pCur!!.getColumnIndex(ContactsContract.Data.DISPLAY_NAME))
val type = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE))
when (type) {
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE -> {
mListMobile.add(MobileType(number, 0))
mMapContact.put(number.replace(Regex(CONTACT_PLUS_PATH_PREFIX), ""), mNameContact)
}
ContactsContract.CommonDataKinds.Phone.TYPE_HOME -> {
mListMobile.add(MobileType(number, 1))
mMapContact.put(number.replace(Regex(CONTACT_PLUS_PATH_PREFIX), ""), mNameContact)
}
ContactsContract.CommonDataKinds.Phone.TYPE_WORK -> {
mListMobile.add(MobileType(number, 2))
mMapContact.put(number.replace(Regex(CONTACT_PLUS_PATH_PREFIX), ""), mNameContact)
}
}
/*val contactNumber = pCur!!.getString(pCur!!.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
val contactName = pCur!!.getString(pCur!!.getColumnIndex(ContactsContract.Data.DISPLAY_NAME))
val contactInfo = ContactInfo(""+id, ""+contactName, "", ""+contactNumber)
LogUtil.e(TAG, "getContactList: $contactNumber - $contactName - $id")
alContacts.add(contactInfo)
break*/
}
pCur?.close()
if(mListMobile.size > 0) {
var contact : Contact? = null
for (mobile in mListMobile) {
contact = Contact(id, "" + mNameContact, ""+mNameContact, false, null, ""+mobile.mobile, "", mobile.type)
alContacts.add(contact!!)
}
}
}
} while (cursor?.moveToNext())
}
【问题讨论】:
-
您是否正在通过设备中的网络面板获取您在 Google 帐户中添加的联系人?
-
不,我不明白这就是我问的原因,我得到了我在设备中添加的那些联系人
-
如果您的设备中没有这些联系人,则说明您的联系人没有正确同步。您必须在“设置”中手动从该帐户同步。
-
我同步正确,所以这些联系人显示在联系人列表中
-
显示获取联系人的完整代码以及您使用的设备?
标签: android contacts google-contacts-api