需要android.permission.ACCESS_ALL_DOWNLOADS或grantUriPermission()

问题描述 投票:1回答:1

当我要从所有下载文件夹中选择一个文件,然后使用内容提供商从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;
             }
        }
android uri android-contentprovider android-permissions
1个回答
-2
投票

您的代码正在“尝试”访问该目录以查看它是否存在,甚至打开输入流来获取所需的文件。如果该目录不存在,Android将对您不满,并告诉您不允许您访问该目录。由于dir不存在,因此无需请求权限。

© www.soinside.com 2019 - 2024. All rights reserved.