微信小程序保存图片拒绝授权后的操作

这个地方还是有些困惑人的,拒绝了保存图片的授权,处理不好再次保存图片的时候就没有反应了,还是很急人的,那么我们来记录一下这个地方。
大家都知道,微信小程序保存图片等都需要获取相对应的权限才可以进行接下来的操作可行,那么如果我们一开始就拒绝了授权,再次想要保存的时候也还是要打开权限才行,所以我们来认识两个跟小程序授权相关的api。

获取用户当前的设置

要使用保存图片权限之前我们首先要看看设备有没有这个权限,所以要获取一下用户当前的设置

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})

有上面的代码可以看到,这个api的返回值中包含了用户已经打开的设置,那么对于我们来说,如果使用的时候已经打开了保存图片的权限scope.writePhotosAlbum是true,我们就可以直接保存图片到本地;但是如果非true,那么我们就要了解一下怎么打开这个权限了~

设置需要打开的权限

注意:设置界面只会出现小程序已经向用户请求过的权限。
2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息。详情

这段话的意思就是,我们要向设置我们想要用的设置,必须是我们之前拒绝过的,有拒绝记录的,才能在这个地方找到把那个可以设置打开。

wx.openSetting({
  success (res) {
    console.log(res.authSetting)
  }
})

书接上面,如果我们使用保存权限时发现我们已经拒绝了授权,就是并没有打开这项权限,所以使用打开权限的api,然后就会去到设置权限的页面
在这里插入图片描述
打开这个权限回去就可以保存图片了。
上代码:

saveImg1() {
    let that = this;
    //看看是否有保存图片的权限,没有就去打开权限
    let openSetting = function(resourse) {
      wx.getSetting({
        success: (res) => {
          console.log('getSetting', res);
          if (res.authSetting['scope.writePhotosAlbum']) {
            saveImg(resourse)
          }else{
            wx.showModal({
              title: '是否授权保存到相册',
              content: '需要获取您的保存图片权限,请确认授权,否则图片将无法保存到相册',
              success: function (tip) {
                if (tip.confirm) {
                  wx.openSetting({
                    success: function (data) {
                      if (data.authSetting["scope.writePhotosAlbum"] === true) {
                        applyApi.toast("授权成功");
                        saveImg(resourse)
                      } else {
                        applyApi.toast("授权失败");
                      }
                    }
                  })
                }
              }
            })
          }
        },
        fail: function(res) {},
        complete: () => {}
      })
    }
    let saveImg = function(resourse) {
      console.log("保存图片:",resourse);
      wx.saveImageToPhotosAlbum({
        filePath: resourse.tempFilePath,
        success: function(res) {
          console.log(res)
          applyApi.toast('保存成功!')
        },
        fail: function(res) {
          console.log(res)
          console.log('fail-saveImageToPhotosAlbum')
          //这个地方加个缓存的意思就是,为了拒绝过了之后缓存为true,再次操作的时候才会去核实保存图片权限的问题
          if(wx.getStorageSync("saveImg") == true){
            openSetting(resourse)
          }
          wx.setStorageSync("saveImg",true);
        }
      })
    }
    wx.downloadFile({
      url: that.QRCodeUrl,
      success: function(res) {
        console.log(res)
        saveImg(res)
      },
      fail: function() {
        console.log('fail-downloadFile')
      }
    })
  }

授权成功后返回保存页面图片就会执行保存程序了。
OK,以上就是小程序保存图片的内容咯,有问题欢迎评论留言~

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 uni.saveImageToPhotosAlbum 接口将图片保存微信小程序的本地相册中。 首先,需要在小程序的 app.json 中添加如下权限: ``` "permission": { "scope.writePhotosAlbum": { "desc": "保存图片到相册需要使用" } } ``` 然后,在需要保存图片的页面或组件中,可以调用 uni.saveImageToPhotosAlbum 接口,如下所示: ``` uni.saveImageToPhotosAlbum({ filePath: '图片文件路径', success: function () { console.log('保存图片到本地相册成功'); }, fail: function () { console.log('保存图片到本地相册失败'); } }); ``` 注意: - filePath 参数为图片文件的本地路径。 - uni.saveImageToPhotosAlbum 接口需要用户授权,如果用户拒绝授权,则无法保存图片到本地相册。 在用户授权后,就可以将图片保存微信小程序的本地相册中了。 ### 回答2: 在uniapp中,可以使用uni.request和uni.downloadFile这两个api来保存微信小程序中的图片到本地。 首先,我们需要将图片保存到服务器上,可以通过uni.request来完成。将图片的url传递给uni.request,并设置responseType为arraybuffer。示例代码如下: uni.request({ url: '图片url', responseType: 'arraybuffer', success: res => { // res.data即为图片的二进制数据 // 接下来将图片保存到本地 } }) 接着,我们可以通过uni.downloadFile api来将图片保存到本地。将res.data作为参数传递给uni.downloadFile的url参数,并设置保存路径filePath。示例代码如下: uni.downloadFile({ url: 'data:image/png;base64,' + uni.arrayBufferToBase64(res.data), success: res => { if (res.statusCode === 200) { // res.tempFilePath为图片保存到本地的临时文件路径 console.log(res.tempFilePath) } } }) 最后,我们可以将保存到本地的临时文件移动到用户的相册中,使用uni.saveImageToPhotosAlbum来完成。示例代码如下: uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: res => { console.log('保存成功') }, fail: err => { console.log('保存失败') } }) 以上就是使用uniapp微信小程序保存图片到本地的简单步骤。需要注意的是,uniapp也提供了其他的api和方法来实现保存图片的功能,可以根据具体需求选择适合的方法。 ### 回答3: uniapp是一种跨平台开发框架,可以同时开发多个平台的应用程序,包括微信小程序。在uniapp中,我们可以使用uni-app插件来实现将图片保存到本地的功能。 具体步骤如下: 1. 首先,我们需要在uniapp项目中引入uni-app插件,可以通过在项目的根目录下的`uni.xml`文件中的`easycom`节点中添加`"@dcloudio/uni-save-image"`来引入插件。 2. 在需要保存图片的页面中,使用`uni.saveImageToPhotosAlbum()`方法来保存图片到本地相册。该方法需要传入一个对象参数,其中包含要保存图片路径`filePath`和一个回调函数`success`用来处理保存成功的情况,和一个`fail`函数用来处理保存失败的情况。 3. 在回调函数中,我们可以通过判断返回值中的`errMsg`属性来判断保存是否成功,如果成功则显示保存成功的提示,否则显示保存失败的提示。 下面是一个示例代码: ``` <template> <view> <image src="/static/image.png"></image> <button @click="saveImage">保存图片</button> </view> </template> <script> export default { methods: { saveImage() { uni.saveImageToPhotosAlbum({ filePath: '/static/image.png', success(res) { uni.showToast({ title: '保存成功', icon: 'success' }); }, fail(res) { uni.showToast({ title: '保存失败', icon: 'none' }); } }); } } } </script> ``` 以上就是在uniapp微信小程序保存图片到本地的简单步骤和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值