티스토리 뷰

반응형


특정 텍스트나 이미지를 블럭하여 공유하기 목록에 앱 추가 및 데이터 받는 방법에 대해 알아보자.


Manifest에 공유 데이터를 받을 Activity 태그 안에 intent-filter를 등록해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<activity android:name="ShareActivity 명">
 
    <intent-filter>
 
        <action android:name="android.intent.action.SEND"/>
 
        <category android:name="android.intent.category.DEFAULT"/>
 
        <data android:mimeType="text/plain"/>
 
    </intent-filter>
 
</activity>
cs

참조 : https://developer.android.com/guide/components/intents-filters.html


mimeType이 공유하는 컨텐츠와 맞지 않을경우 공유 앱 리스트에 나타나지 않는다.

전달 받고 싶은 타입만 추가해서 사용하면 된다.

"*/*". "image/*", "video/*", "audio/*" 등등..


참고로 구글 문서에는 mimeType 타입별 intent-filter를 추가 하였지만

하나의 intent-filter에 여러개의 mimeType을 추가해도 동작한다.

<data android:mimeType="text/plain"/>

<data android:mimeType="image/*"/>


데이터를 확인할 때는 등록한 해당 Activity에 다음과 같이 처리하면 된다.

1
2
3
4
5
6
7
8
9
10
11
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();
 
    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
        } else if (type.startsWith("image/")) {
            Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
        }
    }
cs


반응형
댓글
댓글쓰기 폼
공지사항