Ненормальное поведение запроса разрешения на Android 13 Tiramisù

У меня есть метод, чтобы показать разрешения запроса, если это необходимо

         static boolean requestPermission(int id, String... permissions) {
            System.out.println("REQUEST PERMISSION METHOD");
            boolean granted = true;
            ArrayList<String> list = new ArrayList<>();
            
            for (String s : permissions) {
                int check = ContextCompat.checkSelfPermission(this, s);
                boolean hasPermission = (check == PackageManager.PERMISSION_GRANTED);
                granted &= hasPermission;
                if (!hasPermission) {
                    list.add(s);
                }
            }

            if (granted) {
                return true;
            } else {
                ActivityCompat.requestPermissions(this, permissionsNeeded.toArray(new String[permissionsNeeded.size()]), id);
                return false;
            }
        }

Этот метод работал до Android 13, который я тестирую с последним официальным эмулятором Android в Android Studio, теперь, еслиonResume()я звоню например

          requestPermission(id,
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE));
              

У меня есть цикл безрезультатных запросов: я не получаю никаких сбоев, но в журнале cat я продолжаю"REQUEST PERMISSION METHOD"печатает, строка print помещается в начало метода, как если бы метод каким-то образом вызывался постоянно.

Почему это? Как мне решить эту проблему?

1 ответ

Проблема вызвана тем, чтоконстанты, которые вы пытаетесь получить, больше недействительны, если вы ориентируетесь на более новые версии Android. Это вызывает проблемы с вашим

      ActivityCompat.requestPermissions(...)

Таким образом, оберните запросы с надлежащей проверкой уровня API или выберите более низкую версию Android, пока приложение не будет должным образом перенесено в SAF (поэтому вам не нужен прямой доступ к хранилищу и соответствующие разрешения).

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