Android加载联系人数据详解
加载联系人的操作,说难不难,但要真写得又快又稳,还得摸清 Android 系统的底层套路。
ContactsContract的内容者,算是读取联系人的老熟人了。你通过ContactsContract.Contacts.CONTENT_URI
就能搞到主表,配合ContentResolver
查数据,Cursor 一拉,信息全出来了。
嗯,不过记得先搞定权限,Android 6.0 起必须动态申READ_CONTACTS
。否则权限不批,光有代码白搭。
查询时可以指定字段,比如只拉名字、手机号就够用了。像getString(cursor.getColumnIndex(...))
这种写法用多了就顺手了。结果别忘了cursor.close()
,不然容易内存泄露。
比较麻烦的是数据分表了,像ContactsContract.RawContacts
、ContactsContract.Data
这些表,联合查能拿到更详细的资料,比如邮箱、备注啥的。哦,如果你要展示头像,也得从ContactsContract.Contacts.Photo
那边拎一下。
我推荐你写个简单封装类,比如ContactEntity
,封装一下 Cursor 读取的字段,用起来清爽不少。加个 RecyclerView 列表展示,体验也不错。
如果你还想看看别人怎么的,可以翻下这篇 Android 获取联系人信息,还有 读取手机联系人,都挺有借鉴价值。
,加载联系人这活儿不难,但细节多,权限、表结构、查询效率都要考虑周全。如果你打算做通讯录、拨号类 App,这部分代码建议封装好,用起来更顺手。
187.5KB
文件大小:
评论区