notbug
notbug
  • 发布:2019-08-31 11:29
  • 更新:2020-06-29 14:35
  • 阅读:3271

【报Bug】Uniapp 调用原生获取通讯录信息失败

分类:uni-app

详细问题描述

我们的应用需求获取通讯录信息。不止于添加 所以查看了 5+文档 https://www.html5plus.org/doc/zh_cn/contacts.html,主要看在APP上功能能否正常,已经开启了contracts模块,相关读取修改通讯录权限已加,在android机调试下总是每次都提示runtime错误,显示【打包时未添加contacts模块】,每一次都得云打包安装查看,很麻烦。这是第一个问题。
其次就是已经给了相关权限后调用 plus.contacts.getAddressBook 执行成功回调。但是使用find方法的时候一直没有执行成功或失败的返回。我在社区搜索了相关资料,2014年就有人反馈这个模块有问题.....

[内容]

帖上我的代码 如下

           // #ifdef APP-PLUS  
            plus.contacts.getAddressBook(  
                plus.contacts.ADDRESSBOOK_PHONE,  
                function (addressbook) {  
                        fun.alert("addressbook calback success");  
                        fun.alert("addressbook json: " + JSON.stringify(addressbook));  
                        try{  
                            if (addressbook.find==undefined) {  
                                fun.alert("addressbook.find 方法不存在");  
                            }  
                            fun.alert("111111111111111");  
                            addressbook.find(["displayName","phoneNumbers"],function(contacts){  
                                console.log("getAddressBook success");  
                                fun.alert(contacts.length);  
                            }, function () {  
                                fun.alert("getAddressBook fail");  
                            },{multiple:true});  
                            fun.alert("222222222222222222");  
                        }catch(e){  
                            fun.alert('调用find异常:'+JSON.stringify(e));  
                        }  
                        fun.alert("3333333333333333333");  
                    },  
                function(e){  
                    if (e.code!=undefined && e.code==20) {  
                        fun.alert('未授权');  
                    }  
                    fun.alert("Get address book failed: " + JSON.stringify(e));  
            });  
  // #endif  

[步骤]
在弹出授权获取相关权限点击允许之后执行该段代码
[结果]
弹出相关的弹窗提示 表明已经执行了获取通讯录成功的回调
[期望]
按照代码应该可以获取通讯录个数 但是并没有进去匹配成功或失败的回调
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
Hbuilder
[IDE版本号]
2.2.2
[windows版本号]
windows7
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
app
[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
HBuilderX创建
[编译模式是老模板模式还是新的自定义组件模式?]
线上云打包

App运行环境说明

[Android版本号]
小米 MIUI 10
[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]601961186

2019-08-31 11:29 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com

解决了嘛 我也遇到这个问题了 不知道怎么办

7***@qq.com

7***@qq.com

plus.Contacts.getAddressBook(plus.Contacts.ADDRESSBOOK_PHONE, function( addressbook ) {
console.log(addressbook,'addressbook')
addressbook.find(["displayName","phoneNumbers"],function(Contacts){
let data = JSON.stringify(Contacts);
console.log(data)
}, function () {

                },{multiple:true});  
            }, function () {  

            });  

plus.contacts 改成 plus.Contacts 就解决了

该问题目前已经被锁定, 无法添加新回复