react-native - 可能的未处理承诺拒绝(id:0):错误:权限被拒绝(通过“CameraRoll.saveToCameraRoll()”保存图像时)
问题描述
尝试通过“CameraRoll.saveToCameraRoll()”从 react native 将图像保存到图库时,我被拒绝权限。我的代码在下面==>
takePicture = async function() {
if (this.camera) {
const data = await this.camera.takePictureAsync();
let saveResult = CameraRoll.saveToCameraRoll(data.uri);
console.warn('takePicture ', saveResult);
console.warn('picture url ', data.uri);
}
};
我通过添加所需的代码从 android manifest 和 ios 获得了权限。(在 Android 上) android 清单权限
即使在 ios 中,我也会收到相同的权限被拒绝错误。我应该怎么做才能工作。我不想尝试 RN 文件系统。
解决方案
我浏览了很多资源,终于找到了原因。不知何故,我的清单权限没有获得写入外部权限的权限,如下所示。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
所以我做了什么,我为外部写入添加了运行时权限,它工作正常。我使用来自react-native 的PermissionsAndroid。
代码如下=>
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
{
title: "Cool Photo App Camera Permission",
message:
"Cool Photo App needs access to your camera " +
"so you can take awesome pictures.",
buttonNeutral: "Ask Me Later",
buttonNegative: "Cancel",
buttonPositive: "OK"
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the camera");
const data = await this.camera.takePictureAsync();
let saveResult = CameraRoll.saveToCameraRoll(data.uri);
console.warn("takePicture ", saveResult);
console.warn("picture url ", data.uri);
} else {
console.log("Camera permission denied");
}
} catch (err) {
console.warn(err);
}
推荐阅读
- jwt - 创建签名的 JWT 以替换 Bearer 令牌
- c - Invocation of structure member info display function spits garbled characters
- swagger - Swagger UI 和 Vercel:位置 1 的 JSON 中的意外标记 <
- gitlab-ci - 如何允许多个打开的合并请求到同一个目标分支?
- spring-boot - 如何为我的数据源使用多个用户
- postgresql - Postgresql Kubernetes 部署无法从 Secrets 中读取证书文件
- python - 为什么 Wxpython 自定义窗口有不需要的白色边框?
- javascript - 如何使用 playinline 在 iOS 上“伪造”全屏模式?
- java - 安装新的 eclipse 更新后收到错误消息
- d3.js - D3 如何修复工具提示事件问题?