跳转到内容

Contact Picker 支持情况

发布于 更新于

Contact Picker API 让页面通过用户代理呈现的选择器界面,请求用户从设备通讯录中挑选一个 或多个联系人条目,随后只分享站点请求过的、且用户已选中条目的字段——站点不会获得对通讯录的 常驻访问权限。规范只要求用户代理提供的界面满足其隐私与选择规则;并未规定必须采用任何特定的 原生或浏览器自绘 UI 实现方式。

  • 图例
  • 支持
  • 部分支持
  • 需开启标志
  • 不支持
  • 未知
浏览器 / 平台支持版本置信度来源备注
Chrome (Desktop)不支持—高来源1
Chrome (Android)支持80高来源—
Edge (Desktop)不支持—高来源23
Firefox (Desktop)不支持—高来源4
Firefox (Android)不支持—高来源56
Safari (macOS)不支持—高来源7
Safari (iOS)需开启标志14.5高来源8
Samsung Internet不支持removed in 22.0高来源910
WebView (Android)支持80高来源11
  1. browser-compat-data 未记录 Chrome 的支持。
  2. browser-compat-data 未记录 Edge 的支持。
  3. 由 browser-compat-data 镜像自 Chrome 的数据推导。
  4. 实现跟踪:https://bugzil.la/1756767。
  5. 实现跟踪:https://bugzil.la/1756767。
  6. 由 browser-compat-data 镜像自 Firefox 的数据推导。
  7. browser-compat-data 未记录 Safari 的支持。
  8. 需开启 `Contact Picker API` 偏好设置。
  9. Samsung Internet 自 14.0 起支持,22.0 中移除。
  10. 该 API 虽已暴露,但打开联系人选择器时会失败。
  11. 由 browser-compat-data 镜像自 Chrome Android 的数据推导。

源数据: /compatibility/contact-picker.json · 全球使用占比: 37 % (StatCounter 2026-05)

来源: 规范 · MDN · 最近核验 2026-10-03 · 置信度: 高 (由来源计算)

async function pickContacts() {
const props = ['name', 'email', 'tel'];
const opts = { multiple: true };
return navigator.contacts.select(props, opts);
}
async function shareContacts(props, opts) {
if (!('contacts' in navigator && 'ContactsManager' in window)) {
// 此处不支持——回退到手动联系人录入表单。
return null;
}
return navigator.contacts.select(props, opts);
}
  • 在调用 select() 之前,先用 'contacts' in navigator && 'ContactsManager' in window 做特性检测——根据上方的兼容性数据,目前为 Android 版 Chrome 支持,iOS 版 Safari 仅在开启实验性标志后才可用。
  • 只能在安全的顶层上下文中,由真实的用户手势触发 select()。
  • 为每一个不支持该功能的浏览器准备好手动录入的回退界面。
  • 不要在产品文案中把该选择器界面描述为“原生”——规范只要求提供用户代理呈现的界面, 并不要求它是平台原生控件。

← 返回 兼容性 浏览器。