https://www.bignerdranch.com/blog/implementing-android-marshmallow-direct-share
-
MOS 부터 사용 가능하다.
Content 를 다른 앱 안에 있는 target 에 바로 전달하는 것이다.
예를 들어 어떤 text 를 전달할 때 카카오톡 안의 “어머니”를 바로 선택할 수 있다는 것이다.
(기존에는 앱(카카오톡)을 먼저 선택하고, 카카오톡 앱이 사람(어머니)을 선택하는 기능을 제공하는 형태였다.)
-
app 에서 direct share 를 제공하기 위해서는 아래와 같이 ChooserTargetService extends 한 녀석을 만들고 onGetChooserTargets 를 통해 ChooserTarget list 를 전달해주어야 한다.
class TestChooseTargetService : ChooserTargetService(){ // 여기서 return 하는 값들이 direct share 에 노출된다. // list 의 순서가 그대로 적용되어 노출된다. override fun onGetChooserTargets(targetActivityName:ComponentName, filter:IntentFilter):List<ChooserTarget>{ val targets = ArrayList<ChooserTarget>(); for( i in 0..targetLength){ // add ChooserTarget } } }
-
ChooserTarget 은 다음의 param 들을 갖는다.
name
icon
ranking score( 0 ~ 1.f 사이 ) : direct share item 이 많으면 우선순위 선별에 사용된다. (낮은 score 를 가진 녀석들이 생략된다.)
component name : target 이 선택되었을 때 실행할 것
bundle extras : intent 에 들어갈 것들
-
이제 만든 서비스를 manifest 에 등록해주어야 한다.
<service
android:name=".TestChooseTargetService"
android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
<intent-filter>
<action android:name="android.service.chooser.ChooserTargetService" />
</intent-filter>
</service>
-
그 다음으로 target 을 선택했을 때 띄울 activity 에 meta-data 를 넣어주어야 한다.
<activity
android:name=“.targetActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<meta-data
android:name="android.service.chooser.chooser_target_service"
android:value=“.TestChooserTargetService" />
</activity>
-
끝!!
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Gradle 에 쫄지 말아라 (gradle 잘 이용하자) (0) | 2020.08.01 |
---|---|
[android] custom lint 만들기 (0) | 2020.07.31 |
[android] RecyclerView 에서 Drag 와 Swipe 구현하기 (1) | 2020.07.29 |
[Java] Generational Concurrent GC 에 대해 알아보자 (0) | 2020.07.28 |
[android] ART 의 JIT (Just-In-Time) Compiler 에 대해 알아보자 (0) | 2020.07.27 |
댓글