프로그래밍/안드로이드

안드로이드 - 클립보드를 통한 인텐트 복사

가카리 2015. 12. 3. 20:19
반응형

 

클립보드에 들어가는 데이터가 인텐트라는 것만 다를 뿐 텍스트 복사와 별 차이가 없다.

 

예제는 다음과 같이 구성된다.

 

 

 

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버튼을 누르면 클리보드에서 인텐트를 가져와 인텐트를 시작한다.