【发布时间】:2017-10-10 02:10:23
【问题描述】:
我能够从 android 中的图像中获取 Bitmap,但是当我尝试获取 File 对象时遇到了麻烦。我的问题是当onActivityResult 返回时我怎样才能获得File 对象。
这是我的代码:
打开图片选择:
private void setUpAddMorePicturesClick() {
Button btnAddPictures = (Button)findViewById(R.id.btn_add_pictures);
btnAddPictures.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);//
startActivityForResult(Intent.createChooser(intent, getString(R.string.text_select_picture)),
ConstantValues.REQUEST_CODE_SELECT_IMAGE);
}
});
}
OnActivityResult 方法:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ConstantValues.REQUEST_CODE_SELECT_IMAGE)
{
if (resultCode == Activity.RESULT_OK)
{
if (data != null)
{
//Uri uri = data.getData();
//String uriString = uri.toString();
//File imgFile = new File(uriString);
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
File imgFile = new File(picturePath); // <-- NOT WORKING
// File imgFile = Environment.getExternalStoragePublicDirectory(data.getData().getPath());
//Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
//byte[] s = Utils.bitmapToByteArray(bitmap);
Snackbar snackbarError = Snackbar.make(rootRelativeLayout, R.string.msg_error_wcf_call_default, Snackbar.LENGTH_LONG);
//new EscortBusiness(this).addImage(s, snackbarError);
new EscortBusiness(this).addImageMultiPart(imgFile, snackbarError);
}
} else if (resultCode == Activity.RESULT_CANCELED)
{
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
}
}
}
【问题讨论】:
-
不要尝试获取 File 对象。你不需要它。直接使用 uri。
-
@greenapps 其实我需要它,我必须上传选择的图片,改造方法使用一个文件对象作为参数。
-
// <-- NOT WORKING。错误的描述。你得到了哪条路?会发生什么? -
嗨,我也想做你想做的事。我得到了图像数据,但我想将它提供给“文件”对象以上传到服务器。你设法解决了这个问题吗?
标签: java android media-queries media