uni-app 添加联系人功能失效
uni-app 添加联系人功能失效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.1.2
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:P30 Pro
页面类型:vue
打包方式:云端
App下载地址或H5网址:https://m3w.cn/uniapp
示例代码:
<template>
<view>
<page-head :title="title"></page-head>
<view class="uni-common-mt">
<view class="uni-list">
<view class="uni-list-cell">
<view class="uni-list-cell-left">
<view class="uni-label">名称</view>
</view>
<view class="uni-list-cell-db">
<input class="uni-input" type="text" placeholder="请输入联系人名称" name="name" :value="name" @input="nameChange"></input>
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
<view class="uni-label">手机号</view>
</view>
<view class="uni-list-cell-db">
<input class="uni-input" type="text" placeholder="请输入联系人手机号" name="phone" :value="phone" @input="phoneChange"></input>
</view>
</view>
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button type="primary" class="btn-setstorage" @tap="add">添加联系人</button>
</view>
</view>
</view>
</view>
</template>
<script>
// #ifdef APP-PLUS
import permision from "@/common/permission.js"
// #endif
export default {
data() {
return {
title: 'addPhoneContact',
name: '',
phone: ''
}
},
methods: {
nameChange: function(e) {
this.name = e.detail.value
},
phoneChange: function(e) {
this.phone = e.detail.value
},
async add() {
// #ifdef APP-PLUS
let status = await this.checkPermission();
if (status !== 1) {
return;
}
// #endif
uni.addPhoneContact({
firstName: this.name,
mobilePhoneNumber: this.phone,
success: function() {
uni.showModal({
content: '已成功添加联系人!',
showCancel: false
})
},
fail: function() {
uni.showModal({
content: '添加联系人失败!',
showCancel: false
})
}
});
}
// #ifdef APP-PLUS
,
async checkPermission() {
let status = permision.isIOS ? await permision.requestIOS('contact') :
await permision.requestAndroid('android.permission.WRITE_CONTACTS');
if (status === null || status === 1) {
status = 1;
} else {
uni.showModal({
content: "需要联系人权限",
confirmText: "设置",
success: function(res) {
if (res.confirm) {
permision.gotoAppSetting();
}
}
})
}
return status;
}
// #endif
}
}
</script>
<style>
</style>
操作步骤:
安装hello uniapp的安卓版,点击“实例”-“接口”-“设备”-“添加手机联系人”,输入姓名和电话号码,点击“添加联系人”
预期结果:
联系人被保存到手机通讯录
实际结果:
提示成功添加,但实际通讯录里并没有该条记录。
bug描述:
官网安卓hello uniapp里的添加联系人功能无效,虽然提示添加成功,但实际通讯录里并没有记录。
更多关于uni-app 添加联系人功能失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是必现吗?其他设备是否正常?测试Android 10,HONOR Play4T ,未复现问题。
更多关于uni-app 添加联系人功能失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
终于知道怎回事了,我的通讯录设置的只显示华为账号下的联系人,uniapp是把联系人存在手机里了,要设置为显示全部联系人才可以看到uniapp添加的联系人。
permission.js 这个包怎么找
根据您提供的代码和问题描述,这是一个典型的权限配置问题。虽然您的代码中包含了权限申请逻辑,但在实际运行时可能没有正确获取到联系人写入权限。
在Android 10及以上版本中,联系人权限需要同时在manifest.json中正确配置。请检查您的manifest.json文件是否包含以下配置:
{
"app-plus": {
"permissions": [
"android.permission.WRITE_CONTACTS",
"android.permission.READ_CONTACTS"
]
}
}
另外,在Android 10+设备上,还需要注意以下几点:
- 确保在调用addPhoneContact前,权限已经明确被用户授予
- 可以尝试在权限申请成功后添加一个延时,确保系统权限状态已更新
- 检查华为P30 Pro是否开启了联系人同步功能,这有时会影响新联系人的显示
建议在权限检查部分添加更详细的调试信息,确认权限状态:
console.log('权限状态:', status);