可能的未处理承诺拒绝(id:0):错误:权限被拒绝(通过“CameraRoll.saveToCameraRoll()”保存图像时)
Posted
技术标签:
【中文标题】可能的未处理承诺拒绝(id:0):错误:权限被拒绝(通过“CameraRoll.saveToCameraRoll()”保存图像时)【英文标题】:Possible Unhandled Promise Rejection (id: 0): Error: Permission denied (while saving the image via "CameraRoll.saveToCameraRoll()") 【发布时间】:2019-03-04 07:27:52 【问题描述】:ss from my debugger
我在尝试通过 react native 的“CameraRoll.saveToCameraRoll()”将图像保存到图库时被拒绝。我的代码在下面==>
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 manifest permissions
即使在 ios 中,我也会收到相同的权限被拒绝错误。我应该怎么做才能工作。我不想尝试 RN 文件系统。
【问题讨论】:
您是否尝试过使用let saveResult = await CameraRoll.saveToCameraRoll(data.uri);
?
@MarvinKlar 我都试过了。甚至在现在之前给我同样的错误。 YellowBox.js:67 Possible Unhandled Promise Rejection (id: 0): Error: Permission denied Error: Permission denied
【参考方案1】:
我找了很多资源,终于找到了原因。不知何故,我的清单权限没有获得写入外部权限的权限,如下所示。
<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);
【讨论】:
【参考方案2】:在运行时添加权限后,问题一直存在,直到我执行以下操作:
将下面的代码添加到application
in android/app/src/main/AndroidManifesst.xml
:
<application
android:requestLegacyExternalStorage="true"
...
【讨论】:
以上是关于可能的未处理承诺拒绝(id:0):错误:权限被拒绝(通过“CameraRoll.saveToCameraRoll()”保存图像时)的主要内容,如果未能解决你的问题,请参考以下文章
如何解决该错误>> WARN可能的未处理承诺拒绝(id:0):
可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。 (在“适配器(配置)”中,“适配器”未定义)?
如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?
可能的未处理承诺拒绝(id:1):TypeError:网络请求失败