安卓怎么通过uri获取图片真实路径
时间: 2024-09-17 22:09:08 浏览: 71
在Android中,如果你有一个URI表示图片资源,你可以使用ContentResolver类来获取其对应的本地文件路径。以下是基本步骤:
1. 首先,你需要创建一个Uri对象,它通常来自Intent、数据库或者其他数据源。
```java
Uri imageUri = Uri.parse("content://media/external/images/media/123"); // 这里123替换为实际的图片ID
```
2. 然后创建一个ContentResolver实例,并调用`openInputStream()`方法尝试打开这个Uri,这会返回一个输入流,但不会直接给你文件路径。
```java
ContentResolver resolver = getContentResolver();
InputStream inputStream = resolver.openInputStream(imageUri);
```
3. 为了得到真实的文件路径,你需要读取文件描述符,然后关闭流。接着,你可以使用FileInputStream构造函数从描述符创建一个新的流,并将其传递给FileOutputStream,这样就可以将输入流转换成文件路径了。
```java
FileOutputStream fileOutputStream = new FileOutputStream(fileDescriptor.getFileDescriptor());
// 使用fileOutputStream做进一步操作...
fileOutputStream.close();
inputStream.close();
```
注意,这种方式依赖于系统的文件系统结构,可能会因设备更新或系统设置变化而改变。此外,对于某些安全限制或私有应用的数据,你可能无法获得完整的文件路径。
阅读全文