当前位置: 代码迷 >> Android >> 照片库中的Android图像
  详细解决方案

照片库中的Android图像

热度:93   发布时间:2023-08-04 11:27:16.0
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)
{

}

为了正确地从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中。

试试这个代码

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));
        }
    }

您只需要使用返回的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);
 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();

        }
    }

}
  相关解决方案