Android加载联系人数据详解

加载联系人的操作,说难不难,但要真写得又快又稳,还得摸清 Android 系统的底层套路。

ContactsContract的内容者,算是读取联系人的老熟人了。你通过ContactsContract.Contacts.CONTENT_URI就能搞到主表,配合ContentResolver查数据,Cursor 一拉,信息全出来了。

嗯,不过记得先搞定权限,Android 6.0 起必须动态申READ_CONTACTS。否则权限不批,光有代码白搭。

查询时可以指定字段,比如只拉名字、手机号就够用了。像getString(cursor.getColumnIndex(...))这种写法用多了就顺手了。结果别忘了cursor.close(),不然容易内存泄露。

比较麻烦的是数据分表了,像ContactsContract.RawContactsContactsContract.Data这些表,联合查能拿到更详细的资料,比如邮箱、备注啥的。哦,如果你要展示头像,也得从ContactsContract.Contacts.Photo那边拎一下。

我推荐你写个简单封装类,比如ContactEntity,封装一下 Cursor 读取的字段,用起来清爽不少。加个 RecyclerView 列表展示,体验也不错。

如果你还想看看别人怎么的,可以翻下这篇 Android 获取联系人信息,还有 读取手机联系人,都挺有借鉴价值。

,加载联系人这活儿不难,但细节多,权限、表结构、查询效率都要考虑周全。如果你打算做通讯录、拨号类 App,这部分代码建议封装好,用起来更顺手。

gz 文件大小:187.5KB