React Native CameraRoll:可能未处理的承诺拒绝(id:0):错误:不允许操作

问题描述 投票:0回答:2

我想将图像保存在cameraroll中,并且我正在使用@react-native-community/cameraroll。 要安装我运行的软件包:

yarn add @react-native-community/cameraroll

settings.gradle
文件中我添加了:

include ':@react-native-community_cameraroll'
project(':@react-native-community_cameraroll').projectDir = new File(rootProject.projectDir,    '../node_modules/@react-native-community/cameraroll/android')

我跑了

yarn add fbjs

因为我在此链接中遇到错误: https://github.com/react-native-cameraroll/react-native-cameraroll/issues/352

我在

AndroidManifest.xml
文件中添加了这些权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

我在AndroidManifest的应用程序标签中添加了

android:requestLegacyExternalStorage="true"

这是我的代码:

import CameraRoll from "@react-native-community/cameraroll";

async function hasAndroidPermission() {
  const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;

  const hasPermission = await PermissionsAndroid.check(permission);
  if (hasPermission) {
    return true;
  }

  const status = await PermissionsAndroid.request(permission);
  return status === 'granted';
}
const savePicture = async (path,album)=>{
  if (Platform.OS === "android" && !(await hasAndroidPermission())) {
    return;
  }
  CameraRoll.save(path, {album})
}

当我调用 savePicture 时,我收到此警告:

Possible Unhandled Promise Rejection (id: 0):
Error: Operation not permitted

当我在 android 9/10 中测试这个时,我没有任何问题。在 android 11/12 中,我收到警告并且图片无法保存。 React-native 版本:0.68.2

有人可以帮助我吗? 预先感谢。

android react-native permissions camera-roll
2个回答
-1
投票

使用此库获取 React Native react-native-permissions 中的权限。 它适用于 Android 和 iOS。


-1
投票

这篇文章记录了如何将在线图像保存到ios照片库:

https://community.theta360.guide/t/react-native-save-a-network-image-to-an-ios-camera-roll/9875

© www.soinside.com 2019 - 2024. All rights reserved.