Однако, поскольку приложение поддерживает широкий спектр версий (API 23 и выше), Контроль разрешений READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE возвращает false на устройствах API 33 и выше в случае запроса разрешения, поэтому соответствующая операция не может быть выполнена, хотя используется Image Picker.
Псевдокод того, что я делаю:
Код: Выделить всё
if(hasStoragePermission()){
doSomething() // like access galery
}else{
requestStoragePermission()
}
Код: Выделить всё
fun hasStoragePermission() : Boolean {
return
if (Build.Version_Code >= Tiramisu){
true // I know that this way is not good but if I control the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE, it returns false
}else{
hasPermission(READ_EXTERNAL_STORAGE) && hasPermission(WRITE_EXTERNAL_STORAGE)
}
}
Код: Выделить всё
fun requestStoragePermission() : Boolean {
if (Build.Version_Code >= Tiramisu){
requestPermission(READ_EXTERNAL_STORAGE)
}else{
requestPermission(READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE)
}
}
Короче говоря, я использую Image Picker для всех поддерживаемых API, кроме API 32 и ниже, мне нужно запросить внешнее хранилище READ и WRITE, поэтому я правильно запрашиваю и проверяю статус. Однако при использовании API 33 и более поздних версий я не могу запросить какие-либо разрешения, связанные с хранилищем или мультимедиа, из-за политики конфиденциальности.
Как мне обрабатывать разрешения на хранение для API 33 и более поздних версий?
Подробнее здесь: https://stackoverflow.com/questions/792 ... -and-above