- 用户保存图片到相册授权问题。
问题描述:大家可能会遇到这样的问题,有一个保存图片到相册的功能,我们利用wx.saveImageToPhotosAlbum() api,正常情况下很简单用户点击按钮,系统询问是否授权,用户点击授权图片保存成功。 但是事情往往不是我们想到那样简单,用户的操作可谓是什么操作都有。当系统询问是否授权时,非常敏感的用户一看到授权2话不说,直接拒绝。心想:“握草,想获取我的隐私?”。不一会自己又感觉不对劲,我要保存图片啊,我怎么点了取消。然后又去点保存,发现什么反应都没,心想:“握草怎么没反应,是不是手机坏了,什么鬼”,强迫症患者这个情况怕不是要疯了。 为什么会出现这种情况,根据微信小程序api发现 wx.saveImageToPhotosAlbum() api 只会在用户第一次调用的时候发起授权弹窗,如果用户拒绝授权,wx.saveImageToPhotosAlbum()调用失败,这个时候wx.saveImageToPhotosAlbum()走了失败回调,我们在控制台打印 console.log(“用户授权api调用失败,几率0.01%”) console.log(“用户拒绝授权,几率99.99%”) 用户拒绝授权怎么办,么慌。根据微信小程序文档我们会知道,这种情况下需要用户主动到授权管理页面打开相应的授权开关,高级微信用户都是到入口在那,一般用户授权:“授权管理页面是什么鬼?“,我们不能把希望寄托在他们身上了,他们不是会再一次去点击保存按钮吗? 来一个偷梁换柱,wx.saveImageToPhotosAlbum()调用失败检测是否未授权 this.get_setting() 发现用户未授权,将页面按钮换成 <button open-type=‘openSetting’ bindopensetting=‘bind_load’ class=‘fenxiang_bot_box nobutton’></button> 打开授权管理页面, 用户发现自己“看到了不该看的,握草,用户信息,保存相册,敢获取我的信息,都关掉”,哈哈,用户已经知道是怎么回事了,“不行我得把保存相册打开,这个图片太好了我要保存”; get_setting(t) { wx.getSetting({ success: (res) => { if (res.authSetting[‘scope.writePhotosAlbum’] == undefined) { this.setData({ img_status: true }); } else { this.setData({ img_status: res.authSetting[‘scope.writePhotosAlbum’] }); } if (t) { t() } } }) }, wx.saveImageToPhotosAlbum({ filePath: this.data.img, success(res) { wx.showToast({ title: ‘保存成功’ }) }, fail: (res) => { [代码] this.get_setting(() => { if (this.data.img_status) { wx.showToast({ title: '保存失败', icon: 'none' }) } else { wx.showToast({ title: '权限不足', icon: 'none' }) } }); } }) [代码] 用户同意授权,打开开关返回bindopensetting=‘bind_load’ bind_load 事件触发保存操作, 保存成功^ _^
2019-07-03 - 微信小程序有图片的网络地址,怎么保存保存图片到本地?
请问有这种功能支持吗
2023-10-17 - 小程序的数组赋值问题
我通过封装一个搜索附近酒店函数(getnearHotel())来达到重复利用的目的,但是函数的返回值赋值时,出现undefined错误。 具体如下: 1.自己封装函数,中间的req.request是又封装过一次的,req.request(参数1:访问路径,参数2:传入的值,参数三:请求成功的响应函数,...) [图片] 控制台打印的res的值 [图片] 2.新建变量接收函数的返回值,同时打印测试其值 [图片] 接收返回值 [图片] ★通过结果发现,出现undefined错误,我转念一想,会不会是要循环赋值,但我一想到在this.setData中的hotellist:result是可以循环赋值的,为此我又进行了如下的测试 1.我通过判断函数的返回值是否存在,来设置hotellist的值 [图片] 其控制台的输出结果如下: [图片] 问题1:为什么我不能通过函数的返回值来设定page中的data值? 问题2:是否只有通过this.setData({ lists:res })的方式才能动态的设置值,那意思是函数的返回值是一个数组时,是不能直接通过var result = getnearHotel() //某函数的返回值 接收? 本人刚接触小程序没多久,很多白痴地方望大家帮忙看看,解答解答~
2017-12-19