一、URI概述
通用资源标识符(URI)是用于标识互联网上资源的字符串。在Android中,URI用于表示文件、网络资源等。URI通常由以下三部分组成:
- 访问资源的命名机制
- 存放资源的主机名
- 资源自身的名称,由路径表示
在Android中,URI通常以content://
开头,表示这是一个内容URI。
二、获取图片URI
file://
:表示图片存储在本地文件系统中。content://
:表示图片存储在Android系统的内容提供者中。
Uri uri = Uri.fromFile(new File("/path/to/image.jpg"));
或者:
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
三、根据URI获取图片路径
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path = cursor.getString(columnIndex);
cursor.close();
四、Android 9及以下版本
String path = uri.getPath();
五、注意事项
- 在Android 10及以上版本中,获取图片路径需要具有
READ_EXTERNAL_STORAGE
权限。 - 在Android 10及以上版本中,部分应用可能无法访问
MediaStore
,此时可以使用第三方库如UriUtils
。