Как решить проблему отказа в разрешении: чтение com.android.providers.downloads.DownloadStorageProvider

#android #react-native

#Android #react-native

Вопрос:

Я использую react-native-document-picker для получения файлов с устройства Android и их загрузки. Я смог выбрать файл и нормально загрузить, но только из папки внутри моего файла. Если я выберу файл в другом каталоге, например, недавний (тот, который отображается первым при открытии средства выбора документов), приложение немедленно остановится и отобразит ошибку:

Отказ в разрешении: чтение com.android.providers.downloads.Содержимое uri DownloadStorageProvider://com.android.providers.downloads.documents/document/msf:3239 из pid = 19089, uid = 10372 требует, чтобы вы получили доступ с помощью ACTION_OPEN_DOCUMENT или связанных API

несмотря на то, что это тот же файл, который хранится в моем файле. Я использовал react-native-image-crop-picker и смог выбрать изображение в любом каталоге.

Ниже приведен код моего файла манифеста и функции выбора документа:

—————AndroidManifest—————-

 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
  
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="AIzaSyCeZH6swcDYvYWT78RhSAQYbE1m_Gt2VXs"/>
  <uses-library android:name="org.apache.http.legacy" android:required="false"/>
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
  

—————DocumentPickerFunction—————-

   let arrFile: FileUploadParam[] = [];

  let pickFile = async () => {
    
DocumentPicker.pick({
      type: [DocumentPicker.types.allFiles],
    }).then((file: any) => {
      
arrFile.push(
        fileStorageService.createFileUploadParam(file.name, file.uri, false),
      );

      fileStorageService.uploadChatAttachs(arrFile).subscribe((result) => {
        let urlArr: MessageAttach[] = [];
        result.map((item: any) => {
          urlArr.push({
            name: item.name,
            storage_filename: item.storage_filename,
            url: item.url,
            type: AttachType.FILE,
          });
        });

        chatService
          .sendAttachFileMessage('', urlArr, roomId)
          .subscribe((message) => {});
        console.log('Upload data', urlArr);
      });
    });
  };
  

Комментарии:

1. вам удалось это решить?