Android通过uri获取File类型的路径
时间: 2023-06-01 08:04:18 浏览: 129
可以使用以下代码获取File类型的路径:
```
Uri uri = ... //获取Uri对象
String filePath = null;
if (uri.getScheme().equals("file")) {
filePath = uri.getPath();
} else {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
filePath = cursor.getString(column_index);
cursor.close();
}
File file = new File(filePath);
```
其中,如果Uri的scheme为"file",则直接从Uri对象中获取路径;如果不是则需要查询MediaStore获取路径。最后将路径转化为File类型即可。
相关问题
Android通过uri获取文件路径
在Android中,可以通过以下步骤获取文件路径:
1. 从Intent获取Uri对象
```java
Uri uri = intent.getData();
```
2. 通过ContentResolver获取文件路径
```java
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
cursor.close();
```
注意:如果Uri是File类型的,可以直接通过getAbsolutePath()方法获取文件路径。
android根据uri获取资源路径
在Android中,可以使用`ContentResolver`对象来处理URI并获取文件路径。下面是一个示例代码,可以根据URI获取相应的文件路径:
```java
public String getFilePathFromUri(Context context, Uri uri) {
String filePath = "";
// 判断URI的协议是不是 content://
if (uri.getScheme().equals("content")) {
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
filePath = cursor.getString(columnIndex);
cursor.close();
}
} else if (uri.getScheme().equals("file")) {
filePath = uri.getPath();
}
return filePath;
}
```
在上述代码中,我们通过判断URI的协议是否为`content`来确定是从内容提供者中获取文件路径,还是从普通文件中获取文件路径。如果是从内容提供者中获取文件路径,则使用`ContentResolver`对象获取Cursor对象,并从中获取文件路径;如果是从普通文件中获取文件路径,则直接使用URI的路径。请注意,上述代码中的`MediaStore.Images.Media.DATA`是获取文件路径的列名,如果您需要获取其他类型的文件路径,请根据实际情况进行修改。
阅读全文