클립보드에 들어가는 데이터가 인텐트라는 것만 다를 뿐 텍스트 복사와 별 차이가 없다.
예제는 다음과 같이 구성된다.
copyintent.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btncopy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Copy" />
<Button
android:id="@+id/btnpaste"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Paste" />
</LinearLayout>
CopyIntent.java
package com.example.ch27_copyintent;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class CopyIntent extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.copyintent);
}
public void mOnClick(View v){
switch(v.getId()){
case R.id.btncopy:
copyIntent();
break;
case R.id.btnpaste:
pasteIntent();
break;
}
}
void copyIntent(){
//클립보드 매니저를 가져옴
ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
//인텐트를 만듬 Uri도 넣어줌
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
//클립 데이터 생성
ClipData clip = ClipData.newIntent("intent", intent);
cm.setPrimaryClip(clip);//클립보드에 넣음
Toast.makeText(this, "Intent Copied", 0).show();
}
void pasteIntent(){
//클립보드 매니저를 가져옴
ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
//클립보드가 비었는지 확인
if(cm.hasPrimaryClip() == false){
Toast.makeText(this, "Clipboard Empty", 0).show();
return;
}
//클립보드가 INTENT를 저장하고 있는지 확인
if(cm.getPrimaryClipDescription().hasMimeType(
ClipDescription.MIMETYPE_TEXT_INTENT) == false){
Toast.makeText(this, "Clip is not intent", 0).show();
return;
}
//클립데이터를 가져옴
ClipData clip = cm.getPrimaryClip();
ClipData.Item item = clip.getItemAt(0);
Intent intent = item.getIntent();//아이템에서 INTENT를 가져옴
if(intent != null){
startActivity(intent);//인텐트를 시작함
}
}
}
실행 화면
copy를 누르면 인텐트 클립데이터를 클립보드에 넣는다.
paste버튼을 누르면 클리보드에서 인텐트를 가져와 인텐트를 시작한다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 데몬 백그라운드 서비스 (0) | 2015.12.07 |
---|---|
안드로이드 - 동전 이미지를 드래그 해보자 (0) | 2015.12.05 |
안드로이드 - 드래그 섀도우 이미지 변경하기 (0) | 2015.12.05 |
안드로이드 - startDrag메소드를 이용한 드래그 & 드롭 구현하기 (0) | 2015.12.03 |
안드로이드 - 클립보드를 이용해서 URI 복사하기 (0) | 2015.11.30 |
안드로이드 - Content Provider (콘텐트 프로바이더) (0) | 2015.11.29 |
안드로이드 - 시스템 클립보드를 활용한 데이터 복사 붙여넣기 (0) | 2015.11.07 |
안드로이드 - 압축 파일 사용하기 (0) | 2015.11.05 |