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


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



ソースコード
ClipboardEx.java
package net.npaka.clipboardex;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.graphics.Color;
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;
private final static String TAG_TEXT_COPY="text_copy";
private final static String TAG_TEXT_PASTE="text_paste";
private final static String TAG_URI_COPY="uri_copy";
private final static String TAG_URI_PASTE="uri_paste";
private final static String TAG_INTENT_COPY="intent_copy";
private final static String TAG_INTENT_PASTE="intent_paste";

//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);

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

//ボタンの生成
layout.addView(makeButton("テキストのコピー",TAG_TEXT_COPY));
layout.addView(makeButton("テキストのペースト",TAG_TEXT_PASTE));
layout.addView(makeButton("Uriのコピー",TAG_URI_COPY));
layout.addView(makeButton("Uriのペースト",TAG_URI_PASTE));
layout.addView(makeButton("インテントのコピー",TAG_INTENT_COPY));
layout.addView(makeButton("インテントのペースト",TAG_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_TEXT_COPY.equals(tag)) {
ClipboardManager cm=(ClipboardManager)
getSystemService(CLIPBOARD_SERVICE);
ClipData cd=ClipData.newPlainText("test text","This is TEST!");
cm.setPrimaryClip(cd);
}
//テキストのペースト
else if (TAG_TEXT_PASTE.equals(tag)) {
ClipboardManager cm=(ClipboardManager)
getSystemService(CLIPBOARD_SERVICE);
String str=cm.getPrimaryClip().getItemAt(0).getText().toString();
toast(str);
}
//Uriのコピー
else if (TAG_URI_COPY.equals(tag)) {
ClipboardManager cm=(ClipboardManager)
getSystemService(CLIPBOARD_SERVICE);
ClipData cd=ClipData.newUri(getContentResolver(),
"test uri",Uri.parse("http://npaka.net"));
cm.setPrimaryClip(cd);
}
//Uriのペースト
else if (TAG_URI_PASTE.equals(tag)) {
ClipboardManager cm=(ClipboardManager)
getSystemService(CLIPBOARD_SERVICE);
Uri uri=cm.getPrimaryClip().getItemAt(0).getUri();
toast(uri.toString());
}
//インテントのコピー
else if (TAG_INTENT_COPY.equals(tag)) {
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_INTENT_PASTE.equals(tag)) {
ClipboardManager cm=(ClipboardManager)
getSystemService(CLIPBOARD_SERVICE);
Intent intent=cm.getPrimaryClip().getItemAt(0).getIntent();
startActivity(intent);
}
} catch (Exception e) {
toast(e.getMessage());
}
}

//トーストの表示
private void toast(String text) {
if (text==null) text="";
Toast.makeText(this,text,Toast.LENGTH_LONG).show();
}
}


−戻る−