目次
1. ClipboardManager の一般的なメソッド:
2. ClipboardManager インスタンスを取得する
コピー&ペーストヘルパークラス ClipboardHelper:
1. はじめに
(1つ)ClipboardManager介绍
ClipboardManager
Android が提供するクリップボードの内容を管理するためのシステムサービスです。アプリケーション間でテキスト、リンク、画像などのデータをコピーして貼り付けることができます。
1、ClipboardManager
一般的に使用される方法:
setPrimaryClip(ClipData clip)
: 指定されたClipData
オブジェクトをメインのクリップボード コンテンツとして設定します。これを使用して、テキスト、リンク、画像などをクリップボードにコピーできます。
ClipData clipData = ClipData.newPlainText("label", "要复制的文本");
clipboardManager.setPrimaryClip(clipData);
getPrimaryClip()
: メインクリップボードの内容を取得します。ClipData
メイン クリップボードからのデータを含むオブジェクトを返します。
ClipData clipData = clipboardManager.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
// 处理剪贴板内容
}
hasPrimaryClip()
: メインのクリップボードにコンテンツがあるかどうかを確認します。クリップボードにデータが含まれているかどうかを返し、true
それ以外の場合は を返しますfalse
。
if (clipboardManager.hasPrimaryClip()) {
ClipData clipData = clipboardManager.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
CharSequence text = clipData.getItemAt(0).getText();
// 使用获取到的文本进行操作
}
}
addPrimaryClipChangedListener(OnPrimaryClipChangedListener listener)
: クリップボード変更リスナーを登録して、クリップボードの内容が変更されたときに通知を受け取ります。
clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
// 剪贴板内容发生变化时执行相关操作
}
});
2.入手 ClipboardManager实例
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
(二)、ClipData介绍
ClipData
Android でデータをクリップボードに保存するために使用されるクラスです。これは 1 つ以上のClipData.Item
オブジェクトを含めることができる不変のデータ コンテナであり、各オブジェクトはクリップボードのコンテンツの項目を表します。
1.ClipData
オブジェクトを作成します。
ClipData
クラスの静的メソッドを使用することnewPlainText()
も、newUri()
新しいClipData
オブジェクトを作成することもできます。
newPlainText(CharSequence label, CharSequence text)
: プレーンテキストClipData
オブジェクトを作成します。クリップボードにコピーするラベル (label) とテキスト コンテンツ (text) を指定する必要があります。
CharSequence label = "Label";
CharSequence text = "要复制的文本";
ClipData clipData = ClipData.newPlainText(label, text);
newUri(ContentResolver resolver, CharSequence label, Uri uri)
: URI を含むClipData
オブジェクトを作成します。クリップボードにコピーするには、ラベル、ContentResolver、および URI を指定する必要があります。
CharSequence label = "Label";
Uri uri = Uri.parse("https://example.com");
ClipData clipData = ClipData.newUri(getContentResolver(), label, uri);
2.ClipData
取得した情報:
ClipData
オブジェクトにはクリップボードのデータが含まれています。次の方法を使用してClipData
コンテンツにアクセスし、操作できます。
getItemCount()
:ClipData
に含まれるClipData.Item
アイテム数 ( )を取得します。
int itemCount = clipData.getItemCount();
getItemAt(int index)
: 指定されたインデックスの値を取得しますClipData.Item
。
ClipData.Item item = clipData.getItemAt(index);
3、ClipData.Item
物体:
ClipData.Item
クリップボード内の項目を表します。これはテキスト、リンク、その他のデータです。ClipData
次のメソッドを通じて各オブジェクトにアクセスし、操作できますItem
。
getText()
:ClipData.Item
テキストの内容を取得します。
CharSequence text = item.getText();
getUri()
:ClipData.Item
URI を取得中です。
Uri uri = item.getUri();
2. 例
コピー&ペーストヘルパークラス ClipboardHelper:
package com.example.stardemo;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
public class ClipboardHelper {
private Context context;
private ClipboardManager clipboardManager;
public ClipboardHelper(Context context) {
this.context = context;
clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
}
/**
* 将文本复制到剪贴板
*
* @param text 要复制的文本
*/
public void copyText(String text) {
ClipData clipData = ClipData.newPlainText("text", text);
clipboardManager.setPrimaryClip(clipData);
}
/**
* 从剪贴板获取文本
*
* @return 剪贴板中的文本
*/
public String getCopiedText() {
if (clipboardManager.hasPrimaryClip()) {
ClipData clipData = clipboardManager.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
CharSequence text = clipData.getItemAt(0).getText();
return text.toString();
}
}
return null;
}
}
主な活動:
package com.example.stardemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView copeText,pasteText;
ClipboardHelper mClipboardHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
copeText = findViewById(R.id.copyText);
pasteText = findViewById(R.id.pasteText);
mClipboardHelper = new ClipboardHelper(this);
copeText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mClipboardHelper.copyText(copeText.getText().toString());
Toast.makeText(MainActivity.this, "复制成功", Toast.LENGTH_SHORT).show();
}
});
pasteText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pasteText.setText(mClipboardHelper.getCopiedText());
Toast.makeText(MainActivity.this, "粘贴成功", Toast.LENGTH_SHORT).show();
}
});
}
}
TextView
2 つの:copyText
と が 含まれますpasteText
。クリックするとcopyText
、クラスを使用してClipboardHelper
テキストがクリップボードにコピーされ、コピーが成功したことを示すトースト メッセージが表示されます。クリックすると、pasteText
クリップボードからコピーされたテキストが取得され、それがpasteText
のテキストに設定されます。
アクティビティメイン:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/copyText"
android:layout_width="115dp"
android:layout_height="100dp"
android:gravity="center"
android:text="Hello World!"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textColor="@color/black"
app:layout_constraintVertical_bias="0.234" />
<TextView
android:id="@+id/pasteText"
android:background="@color/teal_200"
android:textColor="@color/black"
android:layout_width="115dp"
android:layout_height="100dp"
android:gravity="center"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.551" />
</androidx.constraintlayout.widget.ConstraintLayout>