Uni app 开发支付宝小程序,保存到相册,获取小程序权限列表失败问题记录及解决方案。

第一种实现方案思路:先获取所有用户的权限列表配置,进行判断是否可以访问相册。
我在做的时候,在测试环境可以获取权限列表,但是在正式环境就会报错,报错原因是获取不到当前用户的权限列表用的这个方法(uni.getSetting),研究了两天也不知道为什么不行,支付宝开发者中心配置该配的也都配置了。于是就舍弃了第一种方案。用了第二种,直接向用户访问申请相册权限。就解决问题了。现在还是不知道为什么在更换了环境和模板之后调用权限列表会失效,如果有哪位小同学知道可以留言相互讨论一下。

saveAlbum() {uni.getSetting({ //获取用户的当前设置success: (res) => {console.log("获取权限", res);// res.authSetting.album && if (res.authSetting.album || res.authSetting.camera ||  res.authSetting.writePhotosAlbum  ) { //验证用户是否授权可以访问相册this.saveNetImageToLocal();} else {uni.authorize({ //如果没有授权,向用户发起请求scope: 'scope.writePhotosAlbum',success: () => {uni.hideLoading();this.saveNetImageToLocal();},fail: (errr) => {console.log(errr)uni.showToast({title: errr.errorMessage,icon: "none",duration: 3000});uni.showToast({title: "请打开保存相册权限,再点击保存相册分享",icon: "none",duration: 3000});setTimeout(() => {console.log('哈哈哈哈')uni.openSetting({ //调起客户端小程序设置界面,让用户开启访问相册success: (res2) => {uni.hideLoading();console.log(res2)},fail(res33) {console.log(res33)}});}, 3000);}})}}})
}saveNetImageToLocal() {let that = this;uni.downloadFile({url: that.imgUrl,success: (res) => {if (res.tempFilePath != '' && res.tempFilePath != null) {uni.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: (res) => {uni.hideLoading();uni.showToast({title: "保存成功!",icon: 'none'});},fail: (res) => {uni.hideLoading();uni.showToast({title: res.errMsg,icon: 'none'});},//无论成功失败都走的回调complete: (res) => {uni.hideLoading();},});} else {uni.showToast({title: '网络错误',icon: 'none'});}}});},

第二种解决方案:
直接询问权限

saveAlbum(){
my.saveImageToPhotosAlbum ({filePath: this.imgUrl,success (res) {console.log ('saveImageToPhotosAlbum 调用成功', res);},fail (err) {console.log ('saveImageToPhotosAlbum 调用失败', err);const platform = my.env.platform;if (err.error === 15) {// 提示用户开启相册权限if (platform === 'iOS') {my.showAuthGuide ({authType: 'PHOTO',complete (res) {if (res.shown) {console.log ('已展示权限引导');} else {console.error('保存图片失败: ', '请在系统设置中为支付宝并开启相册权限', JSON.stringify(err));}},});} else if (platform === 'Android') {console.error('保存图片失败: ', '请在系统设置找到支付宝应用并开启文件和多媒体写入权限', JSON.stringify(err));}}},});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jtti:租用的php服务器运行异常是什么原因导致的?

PHP服务器运行异常可能由多种原因引起。以下是一些常见问题及其相应的解决方案: 1. 服务器资源不足 原因: CPU、内存或磁盘空间不足,导致服务器性能下降。 解决方案: 检查系统资源:使用以下命令检查CPU、内存和磁盘使用…

轻松实现微信内下载,Xinstall让你的App推广更高效!

在微信中推广App,你是否遇到过这样的困扰:推广链接被微信拦截,用户需要手动复制链接到浏览器才能下载,大大降低了安装率?今天,我们要介绍的Xinstall,就是一款能够解决这一痛点的神器&#xff01…

2.2 OpenCV随手简记(三)

图像的阈值处理定义 :将图像转化为二值图像(黑白图), 也可以用于彩色图形,达到夸张的效果 目的:是用来提取图像中的目标物体,将背景和噪声区分开(可以近似的认为除了目标全是噪声)。…

掌握TypeScript的类型断言与守卫:提升代码灵活性与安全性

引言 TypeScript的类型系统为JavaScript带来了结构和严谨性,但有时我们需要更多的灵活性。类型断言和类型守卫是TypeScript提供的两个特性,它们允许我们在强类型的环境中进行更细致的类型操作。 基础知识 类型断言:一种明确告诉编译器某个…

GSEA的算法只考虑排序吗

其实这个问题很好回答&#xff0c;只需要运行如下代码&#xff0c;如下的基因列表是顺序是完全相同&#xff0c;并且我们只是做了最基础的变换 library(clusterProfiler) library(org.Hs.eg.db)data(geneList, package"DOSE")ego1 <- gseGO(geneList geneLi…

【iOS】UI学习(二)

UI学习&#xff08;二&#xff09; 进度条和滑动条步进器与分栏控件警告对话框和提示等待器UITextFieldUITextField控件UITextFieldDelegate协议 UIScrollView布局子视图手动布局子视图自动布局子视图 进度条和滑动条 下面通过一个程序来讲解该内容&#xff1a; #import <…

Django 里的增删改查

下面是步骤 先更新 urls.py 来添加新的url from django.contrib import admin from django.urls import path from app01 import viewsurlpatterns [path(demo/, views.demo), ]在 models.py 里创建表 from django.db import models# Create your models here. class UserI…

力扣 226. 翻转二叉树

给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* invertTree(struct Tr…

[leetcode hot150]第五十七题,插入区间

题目&#xff1a; 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示…

62. UE5 RPG 近战攻击获取敌人并造成伤害

在上一篇&#xff0c;我们实现了通过AI行为树控制战士敌人靠近攻击目标触发近战攻击技能&#xff0c;并在蒙太奇动画中触发事件激活攻击的那一刻的伤害判断&#xff0c;在攻击时&#xff0c;我们绘制了一个测试球体&#xff0c;用于伤害范围。 在之前实现的火球术中&#xff0c…

HBuilderX打包uni-app项目成安卓app

目录 1、下载Android 离线SDK 2、Android Studio导入工程 3、生成签名 3.1、进入到jdk bin目录下&#xff0c;输入cmd执行命令keytool -genkey -alias wxsalias -keyalg RSA -keysize 2048 -validity 36500 -keystore wxs.keystore 生成签名 3.2、查看签名密钥keytool -lis…

Simulink从0搭建模型08-P9 While If SwitchCase模块的使用的使用

Simulink从0搭建模型08-P9 While & If & SwitchCase模块的使用的使用 今日学习内容1. While1.1. While Iterator Subsystem模块1.2. 样例11.3. 样例2 2. If2.1. if模块If Action Subsystem模块&#xff08;action) 3. Switch3.1. Switch Case模块3.2. If Action Subsys…

Java实战:文本文件复制

任务目标 本实战任务的目标是创建一个Java程序&#xff0c;用于复制指定的文本文件到另一个位置&#xff0c;并在控制台中显示复制结果。 任务步骤 创建源文件&#xff1a;在指定的路径D:\love.txt创建源文件。创建文件复制类&#xff1a;在net.huawei.student.test包中创建…

成功解决“ModuleNotFoundError: No Module Named Pycocotools”错误的全面指南

成功解决“ModuleNotFoundError: No Module Named Pycocotools”错误的全面指南 在Python的数据科学、计算机视觉和机器学习项目中&#xff0c;经常需要用到各种工具和库来加速开发过程。其中&#xff0c;pycocotools 是一个专门用于处理 COCO 数据集的库&#xff0c;它提供了多…

代理IP如何提高网站的SEO排名

目录 一、代理IP的作用 二、使用代理IP提高SEO排名的几种常见方法 1. 采集数据 2. 提交网站 3. 模拟用户行为 4. 搜索引擎优化 三、合理使用代理IP的注意事项 四、代码示例 总结 代理IP是一种可以隐藏真实IP地址的技术&#xff0c;通过使用代理IP&#xff0c;可以实现…

nuxt3采用传统scipt标签使用第3方库

背景&#xff1a; 我们经常需要使用到诸如swiper的第3方库&#xff0c;这种第3方库&#xff0c;有的提供相应的npm引入方式&#xff0c;有的没有&#xff0c;对于没有的&#xff0c;我们又想像传统web开发一样使用script引入&#xff0c;在nuxt3下面如何处理&#xff1f; 解决…

最大的游戏交流社区Steam服务器意外宕机 玩家服务受影响

易采游戏网6月3日消息&#xff1a;众多Steam游戏玩家报告称&#xff0c;他们无法访问Steam平台上的个人资料、好友列表和社区市场等服务。同时&#xff0c;社区的讨论功能也无法正常使用。经过第三方网站SteamDB的确认&#xff0c;&#xff0c;这一现象是由于Steam社区服务器突…

新奇css模板

引言 (csscoco.com)https://csscoco.com/inspiration/#/./init

ardupilot开发 --- 机载计算机-软件方案 篇

马儿跑马儿不吃草 0. 概述APSyncBlueOSDroneKitFlytOSMaverickROSRpanion-server结论 0. 概述 The Companion Computer software refers to the programs and tools that run on the Companion Computer. They will take in MAVLink telemetry from the Flight Controller and…

Swift 中 @preconcurrency 修饰符使用浅谈

概述 Swift 6.0 与我们越来越近了&#xff0c;如何将旧范儿的并发代码装换为严格遵守 Swift 6.0 并发模型&#xff08; Strict Concurrency&#xff09;的新代码&#xff0c;这往往使得秃头码农们又要多抓掉几根头发了。 所以&#xff0c;为了最大限度的保持新旧两个并发世界暂…