требуется android.permission.ACCESS_ALL_DOWNLOADS или grantUriPermission () - PullRequest
0 голосов
/ 01 января 2019

Когда я собираюсь выбрать файл из папки всех загрузок, а затем получить путь к файлу из URI, используя контент-провайдер, получаю следующую проблему с отказом в разрешении ниже

Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/1092 from pid=31615, uid=10228 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()

, используя следующий код

String[] contentUriPrefixesToTry = new String[]{
                "content://downloads/public_downloads",
                "content://downloads/my_downloads",
                "content://downloads/all_downloads"
        };
        final String id = DocumentsContract.getDocumentId(uri);
        String path = null;
        for (String uriPath : contentUriPrefixesToTry) {
            final Uri contentUri = ContentUris.withAppendedId(
                    Uri.parse(uriPath), Long.valueOf(id));
            String lastPathSagment = uri.getLastPathSegment();
            InputStream inputStream = context.getContentResolver().openInputStream(uri);
            File file = new File(context.getCacheDir().getAbsolutePath() + "/" + lastPathSagment);
            writeFile(inputStream, file);
            path = file.getAbsolutePath();
             if (path != null) {
             return path;
             }
        }

1 Ответ

0 голосов
/ 09 января 2019

Ваш код «пытается» получить доступ к этому каталогу, чтобы увидеть, существует ли он, и даже открыть поток ввода, чтобы получить предполагаемый файл.Если каталог не существует, Android будет недоволен вами и скажет, что у вас нет доступа к этому каталогу.Нет необходимости запрашивать разрешение, так как каталог не существует.

...