我正在尝试获取URI的真实路径。
首先,我通过一个意图启动图库应用程序:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), SELECT_IMAGE );
在调用onActivityResult之后,我尝试在其中获取URI的绝对路径。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (resultCode == RESULT_OK) {
Uri uri;
if (requestCode == SELECT_IMAGE) {
final Uri uri_data = data.getData();
// Get the path from the Uri
final String path = getPathFromURI(uri_data);
if (path != null) {
File f = new File(path);
uri = Uri.fromFile(f);
}
}
}
} catch (Exception e) {
Log.e("FileSelectorActivity", "File select error", e);
}
}
uri_data包含“ content://com.android.providers.media.documents/document/image%3A67”,但结果路径为空。
pathFromUri方法如下:
private String getPathFromURI(Uri contentUri) {
String res = null;
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_index);
}
cursor.close();
return res;
}
此处column_index为0,但cursor.getString返回null。
为什么会这样?
我拥有android.permission.READ_EXTERNAL_STORAGE权限
编辑: 因此,我想通过相机应用程序拍照,然后用户选择图像。因此,该文件应手动存储在手机上(这是因为我正在手机上对其进行测试)
编辑:
Okey,解决方案是在运行时请求权限...对不起,伙计们