我正在开发一个 Android 应用程序,当用户点击一个按钮时,该应用程序会将用户带到图库中选择一张照片,然后返回到该应用程序以显示照片。
这是我的 onActivityResult
回调函数的一部分:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICK_IMAGE && data != null && data.getData() != null) {
Uri imageUri = data.getData();
//User had pick an image.
Cursor cursor = getContentResolver().query(imageUri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
cursor.moveToFirst();
//Link to the image
final String imageFilePath = cursor.getString(0);
// imageFilePath is null
运行代码时,imageUri
包含一些内容提供程序 uri,如 content:\\something
,但是当我尝试获取图像的文件路径时,我为空。
在这种情况下,我应该如何检索用户选择的图像文件路径?
谢谢
最佳答案
这是我的代码,可以正常工作。
Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));
private String getRealPathFromURI(Uri contentURI) {
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
return contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
}
你会得到/sdcard/imagepath ..
关于Android - 获取用户从图库中选择的图像的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895691/