Проблемы с разрешением READ_EXTERNAL_STORAGE в .NET MAUI 8

Я работаю над приложением .NET MAUI 8 и столкнулся с проблемой доступа к внешнему хранилищу. Мне нужно прочитать файлы из внешнего хранилища, но мои попытки запросить разрешение READ_EXTERNAL_STORAGE не увенчались успехом.

Вот что я пробовал до сих пор:

Запрос разрешения: я реализовал логику запроса разрешения для READ_EXTERNAL_STORAGE, но он немедленно отклоняется. Проверка статуса разрешения: я проверил статус разрешения, и он сообщается как отклоненный, хотя другие разрешения работают нормально. Решение GitHub. Я воспользовался решением из этого репозитория GitHub, но оно не решило проблему. (https://github.com/dotnet/maui-samples/tree/main/8.0/PlatformIntegration/PlatformIntegrationDemos)

Что я сделал:

Я убедился, что добавил необходимое разрешение в файл Android AndroidManifest.xml. Я обработал запросы разрешений и проверки статуса в соответствии с документацией.

Фрагменты кода:

AndroidManifest.xml <uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" /> Код запроса разрешения:


var status = await Permissions.RequestAsync<Permissions.StorageRead>();
if (status != PermissionStatus.Granted)
{
    // Handle the denied permission case
}

Мое окружение:

Версия .NET MAUI: 8 Целевая версия Android: 14.

минимальная версия Android 5

Может ли кто-нибудь помочь мне понять, почему в моем приложении .NET MAUI 8 отказано в разрешении READ_EXTERNAL_STORAGE? Требуются ли какие-либо дополнительные действия или настройки для успешного запроса и использования этого разрешения? Будем очень признательны за любые идеи или решения!

Пожалуйста, отформатируйте свой пост так, чтобы его можно было прочитать. Обычный текст не должен форматироваться как блоки кода.

Jason 23.08.2024 01:43

Кроме того, вы действительно нацелены на Android 7?

Jason 23.08.2024 02:06

Извините, на самом деле целевая версия Android — 14, а минимальная версия Android — 5.

Utpal Bharali 24.08.2024 09:23
0
3
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для целевой версии Android 13 знак <uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" /> был удален, поэтому диалоговое окно запроса разрешения никогда не появится на Android 13 или более поздней версии. Значение Permissions.RequestAsync<Permissions.StorageRead> всегда будет PermissionStatus.Denied.

Но в качестве обходного пути вы можете изменить целевую версию Android вашего приложения на Android 12, чтобы предупреждение о запросе разрешения READ_EXTERNAL_STORAGE по-прежнему появлялось на устройстве с Android 13 или более поздней версии. Добавьте следующий код в AndroidManifest.xml:

 <uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" />
 <uses-sdk android:minSdkVersion = "21" android:targetSdkVersion = "31" />

Примечание:

И есть некоторые относительные проблемы, вы можете следить за ними здесь:

Разрешения CheckStatusAsync или CheckStatusAsync возвращает «Отказано» вместо «Ограничено»

Ошибка разрешения: сканирование Bluetooth без разрешения на определение местоположения на Android 12+

Привет, спасибо за ответ, моя целевая версия Android — 14, а с .NET 8 я не могу ее понизить. и есть ли способ получить READ_EXTERNAL_STORAGE в Android >= 13? Почему его удалили, есть ли возможность его получить?

Utpal Bharali 24.08.2024 09:29

Вы пытались добавить код, которым я поделился выше, в файл AndroidManifest.xml?

Jessie Zhang -MSFT 25.08.2024 06:02

Привет, @JessieZhang-MSFT Спасибо за трюк, он сработал, поскольку я получил всплывающее окно и разрешение показало «Предоставлено», но почему он не смог найти файлы в каталоге! проверьте это ниже - if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) == Permission.Granted) { stringfolderPath = "/storage/emulated/0/MIUI/sound_recorder/call_rec"; строка [] filePaths = Directory.GetFiles(folderPath); foreach (var filePath в filePaths) { } }

Utpal Bharali 26.08.2024 20:44

Это должна быть еще одна проблема. Одна проблема, одна тема. Для этой новой проблемы вы можете создать новую тему. Мы все готовы помочь вам. :)

Jessie Zhang -MSFT 27.08.2024 08:14

Спасибо за помощь. Да, я создам еще один. Еще раз спасибо :-)

Utpal Bharali 28.08.2024 10:09

Другие вопросы по теме