问题描述
System.out.println("weeeeeeeee");
try {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
System.out.println("111111");
System.out.println(Common.getIm1());
Common.getIm1().setImageBitmap(thumbnail);
}
catch(Exception e)
{
System.out.println("dakfls" + e.getMessage());
}
该onactivityresult函数基本上发生了什么,它给了我以下错误。 dakflsAttempt在空对象引用上调用虚拟方法'java.lang.Object android.os.Bundle.get(java.lang.String)'。 在打印1111之前发生了崩溃。我需要完整的图像而不是缩略图
我从这样的片段开始
try
{
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
getActivity().startActivityForResult(i, 100);
}
catch(Exception e)
{
}
1楼
为了正确地从ACTION_PICK接收数据,您必须在Intent上获取getData() 。
像这样:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 100:
if (resultCode == RESULT_OK) {
Uri imageUri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
Common.getIm1().setImageBitmap(bitmap);
}
break;
}
}
注意:您应该将代码100放在类顶部的static final int中。
2楼
试试这个代码
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 100);
您将在onActivityResult上获得图片路径:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100 && resultCode == RESULT_OK && null != data) {
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();
ImageView imageView = (ImageView) findViewById(R.id.imgView);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
3楼
您只需要使用返回的Intent中的数据(内容样式为Uri),并使用ContentResolver查询或打开它
Uri dataUri = data.getData();
ContentResolver contentResolver = getContentResolver();
InputStream stream = contentResolver.openInputStream(dataUri); //if you sure this content Uri is refer a file
BitmapFactory.decodeStream(stream);
4楼
photoBrowseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, DataHolder.INTENT_BROWSE_GALLERY);
}
});
并按照您的意愿使用图像的uri
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == DataHolder.INTENT_BROWSE_GALLERY) {
if (data != null) {
Uri targetUri = data.getData();
}
}
}