프로그래밍/안드로이드

안드로이드 - ShareActionProvider를 이용한 앱간 데이터 공유 처리하기

가카리 2015. 10. 4. 18:21
반응형

 

앱이 작성한 문서, 이미지, 동영상 등의 데이터를 SNS나 내부 프로그램과 공유할 때는 ShareActionProvider 클래스를 사용한다.

 

 

void setShareHistoryFileName(String shareHistoryFile)

위 메소드는 공유 목록을 저장할 파일을 지정한다. 보통 DEFAULT_SHARE_HISTORY_FILE_NAME를 사용하면 된다.

void setShareIntent(Intent shareIntent)

    공유할 때 사용할 인텐트를 지정한다. 공유 목록에서 항목을 선택하면 해당 서비스로 이 인텐트를 전달한다.

 

이번 예제는 텍스트 값을 다른 앱에 공유를 해본다.

 

위와 같이 ShareAction.java와 share_action.xml만 구성한다

 

res/menu/share_action.xml

 

<menu xmlns:android="http://schemas.android.com/apk/res/android"

>

      

<item android:id="@+id/share"

android:title="Share"

android:showAsAction="always"

android:actionProviderClass="android.widget.ShareActionProvider"

/>

<item android:id="@+id/sharemenu"

android:title="Share..."

android:showAsAction="never"

android:actionProviderClass="android.widget.ShareActionProvider"

/>

 

</menu>

 

 

src/ShareAction.java

 

package com.example.ch21_shareaction;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.widget.ShareActionProvider;

import android.widget.TextView;

 

public class ShareAction extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_share_action);

        TextView text = new TextView(this);

        text.setText("공유 액션 프로바이더를 테스트합니다.");

        setContentView(text);

    

    }

    

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // TODO Auto-generated method stub

        super.onCreateOptionsMenu(menu);

        

        //메뉴를 전개자로 가져옵니다.

        MenuInflater inflater = getMenuInflater();

        inflater.inflate(R.menu.share_action, menu);

        

        //공유할 인텐트를 생성합니다.

        Intent intent = new Intent(Intent.ACTION_SEND);

        intent.setType("text/plain");

        intent.putExtra(Intent.EXTRA_TEXT, "sharing text");

        

        //첫번째 아이템

        MenuItem share = menu.findItem(R.id.share);

        //ShareActionProvider 가져오고

        ShareActionProvider provider = (ShareActionProvider) share.getActionProvider();

        //저장할 파일명을 지정함

        provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);

        //인텐트를 지정해줌.

        provider.setShareIntent(intent);

        

        //두번째 아이템

        MenuItem sharemenu = menu.findItem(R.id.sharemenu);

        ShareActionProvider providermenu = (ShareActionProvider) sharemenu.getActionProvider();

        providermenu.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);

        providermenu.setShareIntent(intent);

        

        return true;

    }

      

      

    

}    

 

 

실행화면

여기서 메시지 버튼을 누르면

sharing text라는 값이 공유 됩니다.

다음과 같이 많은 서비스에 공유가 가능하다.