将请求相册权限方式改为uniapp的app端的await Number permision.requestAndroidPermission(String permisionID)
时间: 2024-11-27 11:09:54 浏览: 20
为了将请求相册权限的方式从 `uni.authorize` 改为 `permision.requestAndroidPermission`,你需要对现有的代码进行一些修改。以下是修改后的代码:
```html
<template>
<view>
<view style="width: 750rpx ;height: 500rpx;">
<jp-signature ref="signatureRef"></jp-signature>
</view>
<view>
<button @click="clear">清空</button>
<button @click="undo">撤消</button>
<button @click="save">保存</button>
</view>
</view>
</template>
<script>
import permision from '@/js_sdk/wa-permission/permission.js'
export default {
data() {
return {
url: '' // 用于存储签字图片的临时文件路径
}
},
methods: {
async save() {
try {
const res = await this.$refs.signatureRef.canvasToTempFilePath()
// 判断是否为空画板
if (res.isEmpty) {
uni.showToast({
title: '请先签字',
icon: 'none'
})
return
}
// 存储签字图片的临时文件路径
this.url = res.tempFilePath
// 请求保存图片到相册的权限
const permissionResult = await permision.requestAndroidPermission('android.permission.WRITE_EXTERNAL_STORAGE')
if (permissionResult === 1) {
// 用户已经授权,保存图片到相册
uni.saveImageToPhotosAlbum({
filePath: this.url,
success: () => {
uni.showToast({
title: '保存成功',
icon: 'success'
})
},
fail: (err) => {
uni.showToast({
title: '保存失败:' + err.message,
icon: 'none'
})
}
})
} else {
// 用户拒绝授权,显示提示信息
uni.showToast({
title: '您拒绝了访问相册的权限,无法保存图片',
icon: 'none'
})
}
} catch (err) {
uni.showToast({
title: '获取图片失败:' + err.message,
icon: 'none'
})
}
},
clear() {
this.$refs.signatureRef.clear()
},
undo() {
this.$refs.signatureRef.undo()
}
}
}
</script>
<style lang="scss">
/* 你的样式代码 */
</style>
```
### 主要改动点:
1. **使用 `async` 和 `await`**:在 `save` 方法中使用 `async` 关键字,并用 `await` 来等待 `canvasToTempFilePath` 和 `requestAndroidPermission` 的结果。
2. **请求权限**:将 `uni.authorize` 替换为 `permision.requestAndroidPermission`,并检查返回值以确定用户是否授予了权限。
3. **错误处理**:使用 `try...catch` 结构来捕获和处理可能的异常。
这样修改后,代码会更加简洁且符合现代 JavaScript 的异步编程风格。
阅读全文