安卓获取图片在本地的真实路径
时间: 2023-06-13 10:06:04 浏览: 76
在Android中,获取本地图片的真实路径可以使用以下代码:
```java
public String getRealPathFromURI(Uri contentUri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(contentUri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
cursor.close();
return filePath;
}
```
其中,参数contentUri是图片的URI地址,返回值为图片在本地的真实路径。
相关问题
安卓相册图片获取真实路径
在安卓中,获取图片的真实路径可以通过以下步骤实现:
1. 使用图片选择器或者拍照功能获取图片的URI(Uniform Resource Identifier)对象。
```java
Uri imageUri = data.getData();
```
2. 通过URI对象获取图片的真实路径。
```java
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(imageUri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String imagePath = cursor.getString(columnIndex);
cursor.close();
```
在这段代码中,首先定义了一个 `String` 类型的数组 `filePathColumn`,数组的元素是 `MediaStore.Images.Media.DATA`,表示要查询的列是图片的真实路径。然后调用 `getContentResolver().query()` 方法查询图片的真实路径,传入的参数包括图片的URI对象、要查询的列、查询条件、查询条件参数、以及排序方式。查询结果是一个 `Cursor` 对象,然后调用 `cursor.moveToFirst()` 方法将光标移到第一行,再调用 `cursor.getColumnIndex()` 方法获取真实路径的列索引,最后调用 `cursor.getString()` 方法获取图片的真实路径。最后一步是关闭 `Cursor` 对象,释放资源。
需要注意的是,通过URI获取图片真实路径的方式在不同的安卓版本中可能会有差异,需要根据实际情况进行调整。
android获取本地图片路径
获取本地图片路径可以通过以下步骤实现:
1. 获取图片URI
```java
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
```
2. 获取查询的字段
```java
String[] projection = {MediaStore.Images.Media.DATA};
```
3. 查询数据
```java
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
```
4. 遍历查询结果,获取图片路径
```java
List<String> paths = new ArrayList<>();
if (cursor != null) {
while (cursor.moveToNext()) {
String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
paths.add(path);
}
cursor.close();
}
```
完整代码如下:
```java
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
List<String> paths = new ArrayList<>();
if (cursor != null) {
while (cursor.moveToNext()) {
String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
paths.add(path);
}
cursor.close();
}
```
注意:需要在 AndroidManifest.xml 中添加读取外部存储的权限。
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```