一、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

六、总结