android uri 转file
时间: 2023-08-29 10:13:44 浏览: 192
android实现Uri获取真实路径转换成File的方法
在 Android 中,可以通过 Uri 对象来表示一个文件或者资源的路径,而有时候需要将 Uri 转换成 File 对象来进行操作,可以使用以下代码实现:
```java
public File uriToFile(Uri uri) {
File file = null;
String filePath = null;
if ("content".equals(uri.getScheme())) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
filePath = cursor.getString(columnIndex);
}
cursor.close();
} else if ("file".equals(uri.getScheme())) {
filePath = uri.getPath();
}
if (filePath != null) {
file = new File(filePath);
}
return file;
}
```
这个方法可以处理两种情况:
1. 如果 Uri 的 scheme 是 content,就通过 getContentResolver().query() 方法查询到文件的路径,然后转换成 File 对象。
2. 如果 Uri 的 scheme 是 file,就直接通过 getPath() 方法获取到文件的路径,然后转换成 File 对象。
使用方法:
```java
Uri uri = ... // 从某个地方获取到 Uri 对象
File file = uriToFile(uri);
```
需要注意的是,由于 Android 10 之后的版本对文件读写权限做了一些限制,如果想要访问外部存储中的文件,需要在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
阅读全文