在Android4.4(KitKat)的新图库访问之前,我通过以下方法在SD卡上获得了我的真实路径:
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
现在,intent.action_get_content返回不同的数据:
content://media/external/images/media/62
content://com.android.providers.media.documents/document/image:62
我怎样才能获得SD卡上的真实路径?
注意:这个答案解决了问题的一部分。对于完整的解决方案(以库的形式),看看Paul Burke的答案。
您可以使用URI获取文档ID
,然后查询mediastore.images.media.external_content_uri
或mediastore.images.media.internal_content_uri
(取决于SD卡的情况)。
获取文档ID:
// Will return "image:x*"
String wholeID = DocumentsContract.getDocumentId(uriThatYouCurrentlyHave);
// Split at colon, use second item in the array
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Images.Media.DATA };
// where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
column, sel, new String[]{ id }, null);
String filePath = "";
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
参考:我无法找到这个解决方案的文章。我想请原海报投稿这里。今晚会多看一些。
让我分享到目前为止我所学到的,并提出我的问题。如果希望获取文件夹的Uri并对其进行操作,则应使用和获取访问文件夹的Uri,并为该Uri设置W/R权限。 授予onActivityResult的持久权限: 如果选择设备的主文件夹: 如果使用DocumentFile类获取主文件夹的路径 返回:file:///storage/emulated/0 我的第一个问题是如何使用DocumentFile类获得包含
问题内容: 我的Android应用程序想要在Google云端硬盘中创建一个文件夹,并从设备上的云端硬盘应用程序获取uri。 它发送一个意图,您可以看到以下代码: 然后获取返回的数据,您可以看到以下代码: 我使用了在互联网上发现的一种模仿类型,它似乎是一种标准类型。使用“ application / vnd.google- apps.folder”时会发出相同的错误。目标是要有一个文档树,但是在lo
我正在开发一款。我将启动意图的转换为字符串,它会给我。但我需要找到真正的路径。 例如:
我发现不推荐使用,所以我想用另一种方法获取图像的真实路径。 这里是我获得图像的uri和标题的新方法,但我不知道如何获得真实的路径。 打印uri、标题、路径: Photouri:内容://Media/External/Images/Media/1605 标题:IMG_20191223143418 但我只想要这样:/storage/emulated/0/dcim/1733/img_2019122314
我在我的应用程序中实现了SAF(存储访问框架)。我正在三星Nexus10上运行我的应用程序。它安装了dropbox。但我无法在我的应用程序中看到dropbox。所以我的问题是: Dropbox在SAF注册吗?如果是,是否还有其他事情,我需要做在我的应用程序,使Dropbox可用作为根文件夹之一? 目前,在我的应用程序中,我看到-谷歌驱动器、图像、下载作为我的根文件夹
我正在尝试在Android 8 API Level 26 emulator上运行Xamarin Android应用程序。当我试图将日志写入文件时,这是一个例外。 例外: 系统UnauthorizedAccessException:对路径“/storage/emulated/0/abc.txt”的访问被拒绝 代码: 我也给了和权限。 目标Android版本:Android8.0 API级别26 Or