情境
Android提供一個簡便的方式可以把文字存到剪貼簿
再透過程式將複製的內容貼到想要呈現的地方
程式碼說明
首先安排一個輸入框EditText, 以及三個Button來執行我們的動作。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_text"
android:id="@+id/edit_text" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/copy"
android:id="@+id/copy_btn"
/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/paste"
android:id="@+id/paste_btn"
/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clear"
android:id="@+id/clear_btn"
/>
</LinearLayout>
接著我們寫兩個方法, 分別是把文字複製進剪貼簿以及把文字從剪貼簿內取出來。
private void copyToClipboard(String str){
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(str);
Log.e("version","1 version");
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("text label",str);
clipboard.setPrimaryClip(clip);
Log.e("version","2 version");
}
}
private String copyFromClipboard(){
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
StringBuffer sb = new StringBuffer();
for(int i = 0; i < clipboard.getPrimaryClip().getItemCount(); i++){
sb.append(clipboard.getPrimaryClip().getItemAt(i).getText());
}
return sb.toString();
} else {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
return clipboard.getText().toString();
}
}
由上面我們可以看出, 我們有進行版本的判斷, 原因出在複製到剪貼簿的方法在API 11之後, 有更新方法, 因此舊版的方法被標示為Deprecated。
copyBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
copyToClipboard(editText.getText().toString());
Toast.makeText(MainActivity.this, "複製到剪貼簿", Toast.LENGTH_SHORT).show();
}
});
pasteBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText(editText.getText().append(copyFromClipboard()));
}
});
clearBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText("");
}
});
接著我們對三個Button寫入相對應的事件, 就可以完成這次的功能了。
清除
貼上