更新记录
1.0.1(2026-02-21)
优化源码授权
1.0.0(2026-02-21)
平台兼容性
uni-app(3.6.17)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | √ | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
通讯录选择器组件 xtf-contact-picker
📱 简介
一个简洁的通讯录选择器组件,打开系统通讯录选择联系人,返回原始数据。只做一件事:选择联系人并返回,所有业务逻辑(重复判断、数据过滤)都由使用方处理。
💰 价格说明
| 项目 | 说明 |
|---|---|
| 价格 | 20元(一次性购买,永久使用) |
| 购买权益 | ① 插件源码永久使用权 ② 后续版本免费更新 ③ 基础技术支持 |
| 退款政策 | 购买后7天内未下载源码可申请退款 |
| 试用说明 | 支持在自定义基座无限期调试,正式打包需购买 |
✨ 功能特点
- ✅ 打开系统通讯录选择联系人 - Android系统原生界面
- ✅ 搜索过滤 - 支持按姓名、电话实时搜索
- ✅ 返回原始数据 - 电话是啥就是啥,不做任何格式化处理
- ✅ 自动权限处理 - 自动请求通讯录权限
- ✅ 自定义触发按钮 - 支持插槽自定义样式
- ✅ 轻量级 - 无额外依赖,开箱即用
📋 平台兼容性
| 平台 | 支持情况 | 说明 |
|---|---|---|
| HBuilderX | ✅ 支持 | 3.5.0+ |
| Vue版本 | ✅ Vue2 / Vue3 | - |
| App - Android | ✅ 支持 | 5.0+(已测试) |
| App - iOS | ⚠️ 待测试 | plus.contacts API理论上支持,待用户反馈 |
| 小程序/H5 | ❌ 不支持 | - |
⚠️ 注意:iOS端暂未真机测试,基于plus.contacts实现理论可用。如遇问题请在评论区反馈。
🚀 快速上手
1. 购买导入
购买后可在HBuilderX中直接导入,或下载ZIP解压到 uni_modules 目录。
2. 配置权限
在 manifest.json 中配置通讯录权限:
{
"app-plus": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"
]
},
"ios": {
"plist": {
"NSContactsUsageDescription": "需要访问通讯录以选择联系人"
}
}
}
}
}
3. 在页面中使用
<template>
<view>
<!-- 基础用法 -->
<xtf-contact-picker @onSelect="handleSelect" />
<!-- 自定义触发按钮 -->
<xtf-contact-picker @onSelect="handleSelect">
<template #trigger>
<button class="my-btn">📱 从通讯录选择</button>
</template>
</xtf-contact-picker>
</view>
</template>
<script>
import xtfContactPicker from '@/uni_modules/xtf-contact-picker/components/xtf-contact-picker/xtf-contact-picker.vue'
export default {
components: { xtfContactPicker },
methods: {
handleSelect(contact) {
console.log('选择的联系人:', contact) // 返回原始数据
// 业务逻辑:检查重复、添加等由您自己处理
// 例如:
// if (this.contacts.some(c => c.phone === contact.phone)) {
// uni.showToast({ title: '联系人已存在', icon: 'none' })
// return
// }
// this.contacts.push({ id: Date.now(), ...contact })
}
}
}
</script>
📚 API文档
Props
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title | String | '选择联系人' | 弹窗标题 |
| searchPlaceholder | String | '搜索姓名或电话' | 搜索框占位符 |
| selectButtonText | String | '选择' | 选择按钮文字 |
| loadingText | String | '加载中...' | 加载中提示 |
| emptyText | String | '通讯录暂无联系人' | 空状态提示 |
| autoClose | Boolean | true | 选择后自动关闭 |
Events
| 事件名 | 说明 | 返回值 |
|---|---|---|
| @onSelect | 选择联系人时触发 | { id, name, phone, type }(电话原始格式) |
| @onCancel | 取消选择时触发 | - |
| @onError | 发生错误时触发 | 错误信息字符串 |
Methods
| 方法名 | 说明 |
|---|---|
| openPicker | 打开选择器 |
| closePicker | 关闭选择器 |
Slots
| 插槽名 | 说明 |
|---|---|
| trigger | 自定义触发按钮 |
🔐 权限说明
- Android:
android.permission.READ_CONTACTS - iOS:
NSContactsUsageDescription
组件已内置权限请求逻辑,无需额外代码。
⚠️ 注意事项
- 平台限制:仅支持App平台(Android已测试,iOS理论支持)
- 数据处理:插件不做任何电话格式化,返回原始数据,所有业务逻辑由使用方处理
- 重复判断:插件不判断联系人是否已存在,需在使用方自行处理
- 提示控制:插件内部无任何toast提示,所有提示由使用方控制
❓ 常见问题
Q:iOS能用吗?
A:基于plus.contacts API实现,理论可用。暂未真机测试,欢迎反馈。
Q:电话会格式化吗?
A:不会,返回原始电话格式,是啥就是啥。
Q:会提示选择成功吗?
A:不会,插件内部没有任何提示,您可以在父页面按需提示。
📝 更新日志
1.0.0 (2026-02-21)
- 🎉 首次发布
- ✨ 支持Android系统通讯录选择
- 🔍 支持搜索过滤
- 🔐 自动权限处理
- 🎨 支持自定义触发按钮
📞 联系作者
- 邮箱:您的邮箱@example.com
- 评论区:可直接留言反馈

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 0
赞赏 0
下载 11291367
赞赏 1862
赞赏
京公网安备:11010802035340号