0
public static final int TAKE_PHOTO=1;
public static final int CROP_PHOTO=2;
private Button choosePhoto;
private ImageView picture;
private Uri imageUri;

 choosePhoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            File outputImage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");
            try {
                if (outputImage.exists()){
                    outputImage.delete();
                }
                outputImage.createNewFile();
            }catch (IOException e){
                e.printStackTrace();
            }
            imageUri = Uri.fromFile(outputImage);
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");  
            intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
            startActivityForResult(intent,CROP_PHOTO);
        }
    });
}
protected void onActivityResult(int requestCode,int resultCode,Intent data){
    switch (requestCode){

       case CROP_PHOTO:
            if (resultCode==RESULT_OK){
                try{        //使用decodeStream()函数 解析成Bitmap对象,
                    Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                    picture.setImageBitmap(bitmap);      
                }catch (FileNotFoundException e){
                    e.printStackTrace();
                }
            }
            break;
        default:break;
    }
}

Taking photo is OK but choose photo is wrong, when I click the button it shows album successfully, but when selecting a picture, it return whitout choosing that picture.

McGrady
  • 10,869
  • 13
  • 47
  • 69
Guanwuyu
  • 1
  • 1

2 Answers2

0

Use below code in onActivityResult();

  Uri filePath = intent1.getData();
  Bitmap bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), filePath );
  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
  picture.setImageBitmap(bitmap);      
Vishal Vaishnav
  • 3,346
  • 3
  • 26
  • 57
0

Paste below code after getting data from intent in onactivityresult.

       Uri selectedImage = data.getData();
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getActivity().getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        profilePic.setImageBitmap(BitmapFactory.decodeFile(picturePath));
Sagar Pujari
  • 343
  • 1
  • 11