我正在创建一个应用程序,它可以从相册中选择图片并将其上传到 web 服务。该服务需要所选图像的文件名以及文件内容的 base64 编码。我已经使用硬编码文件路径成功实现了这一点。但是,我无法获取真正的图像文件路径。我在网上阅读了一些资料并尝试了以下代码,但它对我不起作用:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
String[] projection = {MediaStore.Images.Media.DATA};
try {
Cursor cursor = getContentResolver().query(selectedImageUri, projection, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Log.d("Picture Path", picturePath);
}
catch(Exception e) {
Log.e("Path Error", e.toString());
}
}
}
我遇到了这个错误:java.lang.NullPointerException
编辑
忘记提到了我正在使用KitKat。看起来我的问题与KitKat有关。我找到了这个(见下文),它帮助我让我的应用程序正常工作:
Android Gallery on KitKat返回不同的Uri以用于Intent.ACTION_GET_CONTENT