▼Androidメモ▼
クリップボード


クリップボードを利用するプログラムを作成する。



ソースコード
ClipboardEx.java
package net.npaka.clipboardex;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

//クリップボードの利用
public class ClipboardEx extends Activity 
    implements View.OnClickListener {
    private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
        
    //アプリ起動時に呼ばれる
    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        //レイアウトの生成
        LinearLayout layout=new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);            

        //ボタンの生成
        layout.addView(makeButton("テキストのコピー","text_copy"));
        layout.addView(makeButton("テキストのペースト","text_paste"));
        layout.addView(makeButton("Uriのコピー","uri_copy"));
        layout.addView(makeButton("Uriのペースト","uri_paste"));
        layout.addView(makeButton("インテントのコピー","intent_copy"));
        layout.addView(makeButton("インテントのペースト","intent_paste"));
    }
    
    //ボタンの生成
    private Button makeButton(String text,String tag) {
        Button button=new Button(this);
        button.setText(text);
        button.setTag(tag);
        button.setOnClickListener(this); 
        button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC));
        return button;        
    }
    
    //ボタンクリック時に呼ばれる
    public void onClick(View v) {
        String tag=(String)v.getTag();
        try {
            //テキストのコピー
            if (tag.equals("text_copy")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                ClipData cd=ClipData.newPlainText("test text","This is TEST!");
                cm.setPrimaryClip(cd);
            } 
            //テキストのペースト
            else if (tag.equals("text_paste")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                String str=cm.getPrimaryClip().getItemAt(0).getText().toString();
                toast(this,str);
            }
            //Uriのコピー
            else if (tag.equals("uri_copy")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                ClipData cd=ClipData.newUri(getContentResolver(),
                        "test uri",Uri.parse("http://npkaa.net"));
                cm.setPrimaryClip(cd);
            }
            //Uriのペースト
            else if (tag.equals("uri_paste")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                Uri uri=cm.getPrimaryClip().getItemAt(0).getUri();
                toast(this,uri.toString());
            }
            //インテントのコピー
            else if (tag.equals("intent_copy")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                ClipData cd=ClipData.newIntent("test intent",intent);
                cm.setPrimaryClip(cd);
            }
            //インテントのペースト
            else if (tag.equals("intent_paste")) {
                ClipboardManager cm=(ClipboardManager)
                    getSystemService(CLIPBOARD_SERVICE);
                Intent intent=cm.getPrimaryClip().getItemAt(0).getIntent();
                startActivity(intent);
            }
        } catch (Exception e) {
            toast(this,e.getMessage());
        }
    }
    
    //トーストの表示
    public static void toast(Context context,String text) {
        Toast.makeText(context,text,Toast.LENGTH_LONG).show();
    }
}


−戻る−