안녕하세요 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() 입니다!!!!
저도 이부분을 처리하다가 막혔었는데 여러분들에게 도움이 됐으면 하네요 ㅎㅎ
더 좋은 방법이나 잘못된부분은 댓글로 남겨주세요!
다음에는 더 좋은 정보로 소통할께요!ㅎㅎ 감사합니다.
'IT > 안드로이드 관련' 카테고리의 다른 글
[안드로이드] 더보기 기능(TextView ReadMore) (2) | 2018.08.30 |
---|---|
[안드로이드] 안드로이드 스튜디오 업데이트 확인 (0) | 2018.08.28 |
[안드로이드] 레이아웃 모서리 둥글게 하기 (0) | 2018.08.27 |
[안드로이드] SMS 보내기 (ACTION_SENDTO) (0) | 2018.08.27 |
[안드로이드] 위젯(Widget)에 Glide 적용 방법 - AppWidgetTarget (1) | 2018.08.24 |