#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. вам удалось это решить?