无法访问SD卡(ExternalStorageDirectoryPath指向/storage/emulated/0)

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

我正在为 Android 开发一个 React Native 应用程序,它允许用户将文件写入 Android Pie 上的外部 SD 卡。我使用过React-native fs 和react-native fetch-blob 库。问题是我无法获得外部 SD 卡的正确路径。我尝试过使用 RNFS.ExternalDirectoryPath 和 RNFS.ExternalStorageDirectoryPath。它们都将路径指定为“/storage/emulated/0/Android/data/com.storage/files”。该路径不将文件保存在 SD 卡中,而是将文件保存在内部存储器中。 我使用的是 Android 9,并已在 AndroidManifest.xml 中授予读取和写入权限。 关于如何将文件写入SD卡有什么建议吗?android Pie是否支持读取和写入外部SD卡?

react-native android-sdcard sd-card android-external-storage
1个回答
0
投票

使用 React Native 和 RNFS 访问此类文件和目录的解决方案是保证访问并在代码中添加控件,如下所示:

这里是如何将数据库文件从 db 文件夹复制到 externalStorageDirectory 的示例

  var path_dbMaster="/data/user/0/com.<name_your_package>/databases/db_name"
  var path_dbCopie=RNFS.ExternalStorageDirectoryPath+'/dbCopie.db'

  const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, );
       if (granted === PermissionsAndroid.RESULTS.GRANTED)
        {   
          
          RNFS.copyFile(path_dbMaster,path_dbCopie)  
          .then(result => {  
            console.log('file copied:', result);
          })
          .catch(err => {
            console.log(err);
          });
        
         } 
        else {      
           console.log('not granted');     
           
           Alert.alert(''," Permission required ",[{
            text:'OK',
            style:'cancel'
           }])

          } 

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