uni-app,小程序中的addPhoneContact,保存联系人到手机通讯录
文章目录
- 方法详解
- 简介
- 基本语法
- 参数说明
- 基础用法
- 使用示例
- 平台差异说明
- 注意事项
- 最佳实践
方法详解
简介
addPhoneContact是uni-app框架提供的一个实用API,用于向系统通讯录添加联系人信息。这个方法在需要将应用内的联系人信息快速保存到用户设备通讯录的场景下非常有用,比如会员名片、商家联系方式保存等功能。
基本语法
uni.addPhoneContact(OBJECT)
参数说明
OBJECT参数对象支持以下属性:
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
firstName | String | 是 | 名字 |
lastName | String | 否 | 姓氏 |
mobilePhoneNumber | String | 否 | 手机号 |
phoneNumber | String | 否 | 电话号码 |
String | 否 | 电子邮件 | |
organization | String | 否 | 公司/组织名 |
title | String | 否 | 职位 |
address | String | 否 | 地址 |
addressCountry | String | 否 | 国家 |
addressState | String | 否 | 省份 |
addressCity | String | 否 | 城市 |
addressStreet | String | 否 | 街道 |
addressPostalCode | String | 否 | 邮政编码 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
基础用法
uni.addPhoneContact({firstName: '张',lastName: '三',mobilePhoneNumber: '13812345678',email: 'zhangsan@example.com',organization: 'XX科技有限公司',title: '前端工程师',success: () => {uni.showToast({title: '已添加到通讯录',icon: 'success'});},fail: () => {uni.showToast({title: '添加联系人失败',icon: 'none'});}
});
使用示例
// 保存联系人信息到通讯录
saveContact() {// 判断是否有权限或是否登录if (!this.isAuthorized) {uni.showModal({title: '提示',content: '您需要授权才能保存联系人',confirmText: '去授权',success: (res) => {if (res.confirm) {this.requestAuthorization();}}});return;}// 添加联系人uni.addPhoneContact({firstName: this.memberInfo.name || '',mobilePhoneNumber: this.memberInfo.phone || '',title: this.memberInfo.position || '',organization: this.memberInfo.company || '',email: this.memberInfo.email || '',address: this.memberInfo.address || '',success: () => {uni.showToast({title: '已添加到通讯录',icon: 'success'});},fail: (err) => {console.error('添加联系人失败:', err);uni.showToast({title: '添加联系人失败',icon: 'none'});}});
}
平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序 | QQ小程序 |
---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ |
注意事项
权限问题:在某些平台上,调用此API可能需要用户授予通讯录访问权限。
必填字段:不同平台对必填字段的要求可能有所不同,但一般来说firstName是必填的。
iOS特殊处理:在iOS系统中,firstName和lastName会合并显示为一个名字。
用户体验:添加联系人前最好先向用户说明将要执行的操作,获得用户同意后再进行。
错误处理:务必添加fail回调处理添加失败的情况,并给予用户适当的反馈。
最佳实践
提前告知:在用户点击"保存联系人"按钮前,应明确告知用户该操作的目的和结果。
数据验证:在调用API前,应对要保存的联系人数据进行验证,确保至少有姓名和电话号码等基本信息。
优雅降级:对于不支持此API的平台,应提供替代方案,如复制联系信息到剪贴板。
状态反馈:操作成功或失败后,应给予用户明确的反馈,如使用toast提示。
通过合理使用addPhoneContactAPI,可以为用户提供便捷的联系人保存体验,提升应用的实用性和用户满意度。
相关文章:
uni-app,小程序中的addPhoneContact,保存联系人到手机通讯录
文章目录 方法详解简介 基本语法参数说明基础用法使用示例平台差异说明注意事项最佳实践 方法详解 简介 addPhoneContact是uni-app框架提供的一个实用API,用于向系统通讯录添加联系人信息。这个方法在需要将应用内的联系人信息快速保存到用户设备通讯录的场景下非…...

从数据中台到数据飞轮:数字化转型的演进之路
从数据中台到数据飞轮:数字化转型的演进之路 数据中台 数据中台是企业为整合内部和外部数据资源而构建的中介层,实现数据的统一管理、共享和高效利用,目标是打破信息孤岛,提高数据使用效率,支持业务决策和创新 实施成本…...
Spring Boot 注解详细解析:解锁高效开发的密钥
一、引言 Spring Boot 以其快速开发、自动配置等特性,成为构建 Java 应用程序的热门框架。而注解在 Spring Boot 中扮演着至关重要的角色,它们如同魔法指令,简化了配置流程,增强了代码的可读性与可维护性。本文将深入剖析 Spring…...

2025年5月-信息系统项目管理师高级-软考高项一般计算题
决策树和期望货币值 加权算法 自制和外购分析 沟通渠道 三点估算PERT 当其他条件一样时,npv越大越好...

zst-2001 上午题-历年真题 算法(5个内容)
回溯 算法 - 第1题 找合适的位置,如果没有位置就按B回家 d 分治 算法 - 第2题 b 算法 - 第3题 a 算法 - 第4题 划分一般就是分治 a 算法 - 第5题 分治 a 0-1背包 算法 - 第6题 c 算法 - 第7题 最小的为c 3100 c 算法 - 第8题 …...
【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
3d关键点 可视化
目录 pygame pygame保存mp4 mayavi pygame import pygame from pygame.locals import * import numpy as np import sys# 初始化Pygame pygame.init() width, height 800, 600 screen pygame.display.set_mode((width, height)) clock pygame.time.Clock()# 生成示例数据…...

udp多点通信和心跳包
刷题 # UDP多点通信核心要点## 基础通信模式### 单播通信- 一对一通信方式- UDP默认通信模式- 地址指向具体目标主机### 广播通信- 一对多通信机制- 地址范围:xxx.xxx.xxx.255- 仅限局域网传输- 需设置SO_BROADCAST标志### 组播通信- 多对多群组通信- 地址范围&…...
什么是序列化与反序列化
序列化与反序列化:概念、作用及应用 一、基本定义 序列化(Serialization) 将 ** 对象的状态(数据、属性等)转换为可存储或传输的字节流(二进制或文本格式)** 的过程。 目的:使对象能…...

音视频学习:使用NDK编译FFmpeg动态库
1. 环境 1.1 基础配置 NDK 22b (r22b)FFmpeg 4.4Ubuntu 22.04 1.2 下载ffmpeg 官网提供了 .tar.xz 包,可以直接下载解压: wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz tar -xvf ffmpeg-4.4.tar.xz cd ffmpeg-4.41.3 安装基础工具链 sudo …...

如何使用 Qwen3 实现 Agentic RAG?
今天,我们将学习如何部署由阿里巴巴最新Qwen 3驱动的Agentic RAG。 这里是我们的工具栈: CrewAI用于代理编排。 Firecrawl用于网络搜索。 LightningAI的LitServe用于部署。 顶部的视频展示了这一过程。 图表显示了我们的Agentic RAG流程࿱…...

相机、雷达标定工具,以及雷达自动标定的思路
本篇我们来看一下自动驾驶传感器配置一个非常重要的模块,也就是传感器的标定。这里主要是对我之前修改的功能包的使用进行一个介绍. 对应的资源也已经上传了,0积分下载 安装 首先整个项目是使用ros1来进行启动的,但是要想正常编译,需要先安装三个对应的…...

vsomeip环境搭建保姆级教程
vsomeip环境搭建保姆级教程 ubuntu环境搭建 {% links %} site: VMware搭建ubuntu保姆级教程 url: https://zhuanlan.zhihu.com/p/1903219373906327339 desc: flechazo image: https://q1.qlogo.cn/g?b=qq&nk=2861099&s=5 color: “#9d5b8b” {% endlinks %} vsomei…...
【工具记录分享】提取bilibili视频字幕
F12大法 教程很多 但方法比较统一 例快速提取视频字幕!适用B站、AI字幕等等。好用 - 哔哩哔哩 无脑小工具 哔哩哔哩B站字幕下载_在线字幕解析-飞鱼视频下载助手 把链接扔进去就会自动生成srt文件 需要txt可以配合: SRT转为TXT...

我的MCP相关配置记录
1.VSCode的Cline中的MCP {"mcpServers": {"github.com/modelcontextprotocol/servers/tree/main/src/github": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args&quo…...
systemd vs crontab:Linux 自动化运行系统的全面对比
在 Linux 系统运维和开发中,任务调度与服务管理 是不可或缺的一环。无论是定期备份、日志轮转,还是启动后台服务,自动化机制都能极大地提高系统的可靠性与效率。两种最常用的自动化工具是: crontab:传统的基于时间的任…...

我们来学nacos -- 集群nacos2.5.1mysql8.4
2.5.1集群搭建 架构下载解压到3个文件夹初始化数据库&数据迁移检查端口可用配置cluster.confapplication.properties 使用mysql8.4的jar启动db.num is null报错datasource错误成功 nginx反向代理集群查看 架构 其中包含3个nacos节点,然后一个负载均衡器代理3个…...
计算机网络核心技术解析:从基础架构到应用实践
计算机网络作为现代信息社会的基石,承载着全球数据交换与资源共享的核心功能。本文将从网络基础架构、核心协议、分层模型到实际应用场景,全面解析计算机网络的核心技术,并结合行业最新趋势,为读者构建系统的知识体系。 一、计算机…...
Spring Boot 基于 Cookie 实现单点登录:原理、实践与优化详解
前言 在多系统交互的应用场景中,单点登录(SSO)能够显著提升用户体验,减少重复登录的繁琐操作。基于 Cookie 的单点登录方案,凭借其简单直观、浏览器原生支持的特性,成为快速实现单点登录的有效方式。本文将…...

Rollup入门与进阶:为现代Web应用构建超小的打包文件
我们常常面临Webpack复杂配置或是Babel转译后的冗余代码,结果导致最终的包体积居高不下加载速度也变得异常缓慢,而在众多打包工具中Rollup作为一个轻量且高效的选择,正悄然改变着这一切,本文将带你深入了解这个令人惊艳的打包工具…...
pdf url 转 图片
背景:vue2.0需要把pdf转成图片,显示在url里面,使用pdfjs-dist来解决 步骤: 1、安装依赖包(我的项目是node12,安装太高版本会报错) npm i pdfjs-dist2.16.105 2、vue代码 <template><div class"main…...

专题四:综合练习( 找出所有子集的异或总和再求和)
以leetcode1863题为例 题目分析: 找到每个子集,然后子集中的元素异或之后全部相加 算法原理分析: 画决策树:第一层为这个子集有一个元素 第二层这个子集有两个元素 从上往下罗列,把所有子集都罗列出来…...

STM32 修炼手册
第一章 计算机体系结构(了解) 后续在板子上开发的时候,需要考虑是否有操作系统 方式一:有操作系统,通过c库通过os api操作硬件方式二:无操作系统, 通过c库通过固件库操作硬件 第二章 STM32开发板概述 板子/开发板&…...

缓存(2):数据一致性
概述 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功…...
什么是原码和补码
补码的本质确实是模运算(Modular Arithmetic),这是理解补码为何能统一加减法的核心数学原理。下面用最通俗的语言和例子解释清楚: —### 1. 先理解什么是“模运算”- 模运算就是“周期性计数”,比如钟表: -…...

ppy/osu构建
下载 .NET (Linux、macOS 和 Windows) | .NET dotnet还行 构建:f5 运行:dotnet run --project osu.Desktop -c Debug...

基于几何布朗运动的股价预测模型构建与分析
基于几何布朗运动的股价预测模型构建与分析 摘要 本文建立基于几何布朗运动的股价预测模型,结合极大似然估计与蒙特卡洛模拟,推导股价条件概率密度函数并构建动态预测区间。实证分析显示模型在标普500指数预测中取得89%的覆盖概率,波动率估…...
使用交互式半自动化标注工具制作语义分割数据集
参考的初始资源: GitHub项目文档 B站视频 1.安装工具 打开Anaconda Prompt 1.创建虚拟环境 conda create -n isat_env python3.8 conda activate isat_env2.安装GPU版本pytorch 4070 Ti CUDN12.5 pip install torch torchvision torchaudio --index-url https:/…...
deepseek梳理java高级开发工程师微服务面试题
Java微服务高级面试题与答案 一、微服务架构设计 1. 服务拆分原则 Q1:微服务拆分时有哪些核心原则?如何解决拆分后的分布式事务问题? 答案: 服务拆分五大原则: 1. 单一职责原则(SRP)- 每个…...
二分查找算法的思路
二分查找思路总结 明确目标与单调性特点: 核心目标:寻找满足某种条件的答案(如最小/最大值)。单调性要求:需要证明你的判断函数具有单调性——即如果某个答案 T 可行,那么大于 T 的答案通常也是可行的&…...