赞
踩
目录
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() {
- // 剪贴板内容发生变化时执行相关操作
- }
- });
ClipboardManager实例
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
(二)、ClipData介绍
ClipData
是Android中用于在剪贴板中存储数据的类。它是一个不可变的数据容器,可以包含一个或多个ClipData.Item
对象,每个对象代表一项剪贴板内容。
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
对象。需要提供标签(label)、内容解析器(ContentResolver)以及要复制到剪贴板的URI。- CharSequence label = "Label";
- Uri uri = Uri.parse("https://example.com");
- ClipData clipData = ClipData.newUri(getContentResolver(), label, uri);
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();
- 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
:copyText
和pasteText
。在点击copyText
时,它将使用ClipboardHelper
类将文本复制到剪贴板中,并显示一个Toast消息表示复制成功。在点击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>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。