본문 바로가기

IT/안드로이드 관련

[안드로이드] 이미지가져오기 ACTION_GET_CONTENT 에서 putExtra 사용방법

안녕하세요 YTS 입니다. 

오늘은 이미지 가져오기(ACTION_GET_CONTENT)을 이용하실떄에 putExtra가 제대로 작동을 안하는데요

그에 대한 처리 방법을 알려드리고자합니다.


일단 기본적인 이미지 가져오기(ACTION_GET_CONTENT)은

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).startActivityForResult(intent, requestCode);


요로코롬 사용해서 


@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null && resultCode == RESULT_OK) {
if (requestCode == RequestCode.EDIT_WRITE_IMAGE_ITEM_SELECT) {
ShowIntent.imageCroup(this, data, RequestCode.EDIT_WRITE_IMAGE_ITEM_CROP);
}
}

요론식으로 받아오는 형태인데요. 그렇다면 추가적인 데이터를 넘겨 처리하시고싶으면



Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Keys.POSTION, postition);
((Activity) context).startActivityForResult(intent, requestCode);

대부분 이런식으로 데이터를 putExtra 하실텐데요. 이런식으로 하면 절대로 저 Result data 에서 반환을 하지못합니다.


즉 ACTION_GET_CONTENT라는 암시적 인텐트는 onActivityResult에 Intent 파라미터값에서 이미지 경로(path)만 넘깁니다.


그렇다면 어떤식으로 처리해야할까요? data를 넘길 수 없으므로 해당 Activity 자체 인텐트에 값을 저장해서 이용해야합니다.


이말은 즉


Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).getIntent().putExtra(Keys.POSTION, postition);
((Activity) context).startActivityForResult(intent, requestCode);


이렇게 해당 Activity에서 Intent를 불러와 putExtra를 하시고



@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
int position = getIntent().getIntExtra(Keys.POSTION, 0);
}


onActivityResult 에서 받아오는 형식으로 하시는방법으로 처리하시면 됩니다!

onActivityResult에 data가 아닌!!! Activity에 getIntent() 입니다!!!!



저도 이부분을 처리하다가 막혔었는데 여러분들에게 도움이 됐으면 하네요 ㅎㅎ


더 좋은 방법이나 잘못된부분은 댓글로 남겨주세요! 


다음에는 더 좋은 정보로 소통할께요!ㅎㅎ 감사합니다.