Uniapp Android/IOS 获取手机通讯录

news/2025/5/24 1:30:59

介绍

最近忙着开发支付宝小程序和app,下面给大家介绍一下 app 获取通讯录的全部过程吧,也是这也是我app开发中的一项需求吧。

效果图如下

在这里插入图片描述
在这里插入图片描述

勾选配置文件

使用uniapp开发的童鞋都知道有一个配置文件 manifest.json 简单的说一下,就是安卓/ios/小程序中一些基础的配置文件,你可以配置应用的图标及权限等等。

记住这个是一定要勾选的,不然你点击获取通讯录时,是会报错误的提示的,博主已踩过坑了
在这里插入图片描述

填写配置文件

说到配置文件,我们获取用户的通讯录就得使用到权限配置

Android部分

在这里插入图片描述

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>

IOS部分

在这里插入图片描述
翻到下面会有通讯录相关的配置,这里你们自己看着写
在这里插入图片描述

源码视图配置

这里就不多讲了,直接上配置文件

"app-plus": {/* 应用发布信息 */"distribute" : {/* android打包配置 */"android" : {"permissions" : [// 联系人"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"],},/* ios打包配置 */"ios" : {"privacyDescription" : {"NSContactsUsageDescription" : "我们需要访问您的通讯录以便为您提供联系人相关的服务。",}}
}

好了,以上基础的已经配置好了

获取通讯录部分

话不多讲,直接上代码

界面结构部分
<template><view class="contacts_box"><view @click="getContacts" class="contacts_title">获取联系人信息</view><view v-for="(item,index) in contact_list" :key='index' class="contacts_list_item"><view style="font-weight: 700;">联系人:{{item.displayName}}</view><view>联系人电话:{{item.phoneNumbers[0].value}}</view></view></view>	
</template>
逻辑处理部分
<script>export default {data() {return {contact_list: [],}},methods: {getContacts() {if (uni.getSystemInfoSync().platform === 'android') {plus.android.requestPermissions(['android.permission.READ_CONTACTS'],(resultObj) => {const result = resultObj.granted;if (result.indexOf('android.permission.READ_CONTACTS') !== -1) {this._getContacts();} else {uni.showToast({title: '您拒绝了通讯录权限,请在设置中开启',icon: 'none'});uni.hideLoading();}},(error) => {console.log('请求权限失败: ' + JSON.stringify(error));uni.showModal({title: '权限请求失败',content: '应用需要读取通讯录权限才能为您提供更好的服务,请在设置中授予该权限。',showCancel: false});uni.hideLoading();});} else if (uni.getSystemInfoSync().platform === 'ios') {this._getContacts(); // iOS 直接调用}},_getContacts() {// 获取系统通讯录plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function(addressbook) {// 查找联系人addressbook.find([], function(contacts) {this.contact_list = contacts;}.bind(this), function(e) {console.log('查找联系人失败: ' + e.message);if (e.code === 20) {uni.showToast({title: '您拒绝了通讯录权限,请在设置中开启',icon: 'none'});}});}.bind(this), function(e) {console.log('获取通讯录失败: ' + e.message);if (e.code === 20) {uni.showToast({title: '您拒绝了通讯录权限,请在设置中开启',icon: 'none'});}});}}}
</script>

注意事项

特别提醒!!!

特别提醒!!!

特别提醒!!!

如果你要使用通讯录功能的话,一定记得完善信息,不然不会让你打包的 下面就是我实名的情况。
实名地址 : https://dev.dcloud.net.cn/pages/user/info

在这里插入图片描述
完结!!!

撒花 🎉🎉🎉

撒花 🎉🎉🎉

撒花 🎉🎉🎉


https://dhexx.cn/news/show-5514460.html

相关文章

量子计算在软件开发中的兴起

量子计算的兴起对软件开发有着深远的影响&#xff0c;它能够实现传统计算系统所无法完成的解决方案。 量子计算&#xff08;QC&#xff09;是一个充满前景的新概念&#xff0c;标志着软件开发领域的一次变革性转变。这项技术的融合将把编程提升到一个全新的高度&#xff0c;为…

Android Handler 机制面试总结

一、Handler 机制核心原理 1. ThreadLocal 与线程绑定 真题&#xff1a; 为什么每个线程只能有一个 Looper&#xff1f;ThreadLocal 是如何实现线程隔离的&#xff1f; 源码注释&#xff1a; public final class Looper {// 静态 ThreadLocal 存储每个线程的 Looper 实例s…

服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?

SSL/TLS 安全漏洞排查与修复指南 一、常见配置错误类型‌ 弱加密算法与密钥问题‌ 使用弱密码套件&#xff08;如DES、RC4&#xff09;或密钥长度不足&#xff08;如RSA密钥长度<2048位&#xff09;&#xff0c;导致加密强度不足。 密钥管理不当&#xff08;如私钥未加密存…

5月9日复盘-混合注意力机制

5月9日复盘 四、混合注意力 混合注意力机制&#xff08;Hybrid Attention Mechanism&#xff09;是一种结合空间和通道注意力的策略&#xff0c;旨在提高神经网络的特征提取能力。 1. CBAM Convolution Block Attention Module &#xff0c;卷积块注意力模块 论文地址&…

A2A demo简单实现(使用qwen模型)(一)

项目准备 初始化项目 uv init --package my-project cd my-project 创建虚拟环境 uv venv .venv 激活虚拟环境&#xff1a; # For Windows .venv\Scripts\activate# For macOS/Linux source .venv/bin/activate 添加A2A库 uv add githttps://github.com/djsamseng/A2A#s…

JavaScript性能优化实战,从理论到落地的全面指南

在前端开发领域&#xff0c;JavaScript的性能优化是提升用户体验的核心环节。随着Web应用复杂度的提升&#xff0c;开发者面临的性能瓶颈也日益多样化。本文将从理论分析、代码实践和工具使用三个维度&#xff0c;系统性地讲解JavaScript性能优化的实战技巧&#xff0c;并通过大…

第十五章,SSL VPN

前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件&#xff0c;存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护&#xff0c;意味着接入用户需要不停的调整策略&#xff0c;来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…

如何构建容器镜像并将其推送到极狐GitLab容器镜像库?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 构建容器镜像并将其推送到容器镜像库 (BASIC ALL) 在构建和推送容器镜像之前&#xff0c;您必须通过容器镜像库的身份验证。 …

Django项目中不同app使用不同数据库的实现

在某些复杂的Django项目中&#xff0c;可能需要将不同的应用程序&#xff08;app&#xff09;分配到不同的数据库中&#xff0c;以实现数据隔离、负载均衡或其他特定需求。本文将详细介绍如何在Django项目中实现不同app使用不同数据库。 一、配置多数据库 首先&#xff0c;在…

CI/CD面试题及答案

一、CI/CD 基础概念 1. 什么是 CI/CD&#xff1f;CI 和 CD 的区别是什么&#xff1f; 答案&#xff1a; CI&#xff08;持续集成&#xff09;&#xff1a;开发人员提交代码后&#xff0c;自动构建并运行测试&#xff0c;确保代码集成无冲突。CD&#xff08;持续交付 / 部署&am…