앱이 작성한 문서, 이미지, 동영상 등의 데이터를 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라는 값이 공유 됩니다.
다음과 같이 많은 서비스에 공유가 가능하다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 프래그먼트 대화상자를 액티비티 안에 배치하기 (0) | 2015.10.12 |
---|---|
안드로이드 - DialogFragment 로 대화상자 만들기 (0) | 2015.10.11 |
안드로이드 - 내비게이션 탭(Navigation Tab) (0) | 2015.10.04 |
[펌자료] 안드로이드 - 액티비티의 상태를 저장 및 복원하는 콜백 메소드 - onSaveInstanceState, onRestoreInstanceState (0) | 2015.10.04 |
안드로이드 - 액션바의 활용 두번째 액션 프로바이더 (0) | 2015.09.28 |
안드로이드 - 프래그먼트를 이용한 간단한 사전 만들기 (0) | 2015.09.21 |
안드로이드 - 액션바의 활용 첫번째 SeachView (0) | 2015.09.20 |
안드로이드 - 앱 로고 아이콘 (0) | 2015.09.20 |