Android通讯录号码匹配联系人名
输入通讯录号码直接拿到联系人名,在 Android 开发里算是比较常见的小功能,像做来电识别、短信助手、甚至一些社交 App 都会用到这个。关键在于你得搞清楚 Android 通讯录的数据结构,怎么用ContentResolver
去查数据表,怎么根据mimetype
字段区分姓名和号码——逻辑清晰,操作也不算难。
权限申是第一步,在AndroidManifest.xml
里加上READ_CONTACTS
权限,这一步别忘了,不面再怎么查也查不到。
就用ContentResolver
开查,配合ContactsContract.CommonDataKinds.Phone.CONTENT_URI
和号码构造查询条件。比如:
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?";
String[] selectionArgs = { normalizedNumber };
Cursor cursor = resolver.query(uri, null, selection, selectionArgs, null);
号码记得用PhoneNumberUtils.normalizeNumber()
先规范一下,格式统一了才方便匹配。查出来的Cursor
结果再遍历,用getColumnIndex()
和getString()
取出联系人名。
还有一点值得注意,大数据量的情况下最好用异步操作,比如AsyncTask
或者LiveData
,别堵主线程。权限问题也要好,动态权限申是标配了。
如果你想快速实现这个功能,或者正好在做类似需求,这段逻辑用起来还挺顺手的。更多相关技巧你也可以看看这些资料:
蛮实用的技巧,用好了能帮你节省不少开发时间。
53.42KB
文件大小:
评论区