CAFE

안드로이드 질문

Re:Intent 및 createChooser, 공유버튼에 대해 궁금한점이 있습니다.

작성자슈퍼성근|작성시간14.06.01|조회수153 목록 댓글 2

하두 오래전에 분석한 내용이라 기억이 가물하네요.


집필 막바지라 다시 확인하고 답할 시간은 없네요.

알고있는 내용을 공유해드립니다.


공유는 안드로이드 내장 액티비티인 ChooserActivity를 사용하고

ChooserActivity는 ResolverActiviy를 상속 받습니다.

그리고 다시 ResolverActiviy는 AlertActivity를 상속받구요.


여기서

==================================================================

AlertActivity : 다이얼로그 리스트 형태의 액티비티를 지원합니다.

ResolverActiviy : 리스트 내용을 공유할 대상 아이템들로 등록합니다.

ChooserActivity : 다이얼로그의 타이틀과 공유할 대상 인텐트, 추가로 공유에 포함시킬 대상 인텐트 리스트

                         등을 분리하여 ResolverActiviy가 대상 아이템 등록하도록 합니다.

==================================================================

이걸 알려드린 이유는 

ResolverActivity를 분석하면 대부분의 구조를 알수 있다는 것을 말씀드린 것이고,

구조는 몰라도 된다고 생각하신다면

ChooserActivity 사용법만 아시면 된다는 것을 알려드리기 위함입니다.


ChooserActivity를 이용하면

기본적으로 공유할 대상들을 리스트에 포함시킬 수 있습니다.

또한 공유 대상이외에 네이버처럼 추가적으로 상단에 

아이템을 삽입할 수도 있습니다.


ChooserActivity는 Intent Extra에 세 가지 값을 지원합니다.


1) Intent.EXTRA_TITLE : String형의 공유 다이얼로그의 타이틀( 타이틀을 설정하지 않으면 공유라고 뜨겠지요 ^^)

2) Intent.EXTRA_INTENT : 공유 대상 Intent 데이터

3) Intent.EXTRA_INITIAL_INTENTS : 공유 대상 외 리스트 가장 상단에 추가할 대상 아이템

                                                    intent 배열로 여러개를 추가할 수 있습니다.


위에 것을 모두 사용했다면 다이얼로그는 다음과 같이 출력되겠죠.


============================

Intent.EXTRA_TITLE 내용

============================

Intent.EXTRA_INITIAL_INTENTS  <= 공유 대상의 직접 지정한 아이템(앱)들

...

...

Intent.EXTRA_INTENT <= 공유할 아이템(앱)들

...

...

============================




아마도 이렇게 사용하겠죠..


// 1. 먼저 공유할 대상을 선정해야겠죠. 따라서 공유

//    대상 인텐트를 생성합니다.

Intent i = new Intent(Intent.ACTION_SEND);

...


// 2. Intent.createChooser 함수를 이용해서 ChooserActivity 인텐트를 생성합니다.

//    참고로 해당 함수에는 첫번째 인자로 공유 대상 인텐트가 들어 갑니다. 

//                         두번째 인자로는 다이얼로그의 제목입니다.

Intent chooserIntent = Intent.createChooser(i, "공유할꼬야...");  


여기까지 하면 startActivity를 통해 일반적인 공유 다이얼로그가 뜨겠죠.

그러나 네이버처럼 앞에 원하는 아이템을 추가하고 싶다면

startActivity 전체 다음과 같이 추가하면 됩니다.


Intent intentExt = Intent(...)

chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { intentExt });


이해가 되셨나요?


감사합니다.


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자아잉 | 작성시간 14.06.02 아... 이런게 있군요ㅜㅡ 감동입니다.
    정말 감사합니다.
    그리고 책나오면 싸인받으러 가겠습니다.
    마지막까지 홧팅하십시오!
  • 답댓글 작성자슈퍼성근 작성자 본인 여부 작성자 | 작성시간 14.06.02 감사합니다. 끝까지 최선을 다하겠습니다. ^^/
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼