美文网首页
android之ClipboardManager使用

android之ClipboardManager使用

作者: Lee_5566 | 来源:发表于2021-02-04 20:17 被阅读0次
    image.png

    ClipboardManager

    ClipboardManager是Android系统剪贴板的主要类。使用剪切板功能主要包含以下三个类:

    • ClipboardManager: 表示一个剪贴板
    • ClipData: 剪贴板中保存的所有剪贴数据集(剪贴板可同时复制/保存多条多种数据条目)
    • ClipData.Item: 剪贴数据集中的一个数据条目

    复制使用代码:

    // 获取系统剪贴板
    ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    
    // 创建一个剪贴数据集,包含一个普通文本数据条目(需要复制的数据)
    ClipData clipData = ClipData.newPlainText(null, "需要复制的文本数据");
    
    // 把数据集设置(复制)到剪贴板
    clipboard.setPrimaryClip(clipData);
    

    粘贴使用代码:

    // 获取系统剪贴板
    ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    
    // 获取剪贴板的剪贴数据集
    ClipData clipData = clipboard.getPrimaryClip();
    
    if (clipData != null && clipData.getItemCount() > 0) {
        // 从数据集中获取(粘贴)第一条文本数据
        CharSequence text = clipData.getItemAt(0).getText();
        System.out.println("text: " + text);
    }
    

    剪贴板的数据改变监听:

    // 获取系统剪贴板
    ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    
    // 添加剪贴板数据改变监听器
    clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            // 剪贴板中的数据被改变,此方法将被回调
            System.out.println("onPrimaryClipChanged()");
        }
    });
    
    // 移除指定的剪贴板数据改变监听器
    // clipboard.removePrimaryClipChangedListener(listener);
    

    实战

    mainActivity.java:

    package com.exmple.hookclipboard;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.ClipData;
    import android.content.ClipboardManager;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import org.w3c.dom.Text;
    
    public class MainActivity extends AppCompatActivity {
    
        Button button;
        Button button2;
    
        TextView srcText;
        TextView destText;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            srcText = (TextView)findViewById(R.id.src);
            destText = (TextView)findViewById(R.id.dest);
    
            button = (Button)findViewById(R.id.button);
            button2 = (Button)findViewById(R.id.button2);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    copyClieck();
                }
            });
    
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    pasteClieck();
                }
            });
        }
    
        public void copyClieck() {
            Context context = getApplicationContext();
            // 获取系统剪贴板
            ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    
            // 创建一个剪贴数据集,包含一个普通文本数据条目(需要复制的数据)
            ClipData clipData = ClipData.newPlainText(null, srcText.getText());
    
            // 把数据集设置(复制)到剪贴板
            clipboard.setPrimaryClip(clipData);
        }
    
        public void pasteClieck() {
            Context context = getApplicationContext();
            // 获取系统剪贴板
            ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
            // 获取剪贴板的剪贴数据集
            ClipData clipData = clipboard.getPrimaryClip();
    
            if (clipData != null && clipData.getItemCount() > 0) {
                // 从数据集中获取(粘贴)第一条文本数据
                CharSequence text = clipData.getItemAt(0).getText();
    
                destText.setText(text);
            }
        }
    
    
    
    }
    

    activity_main.xml:

    <?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/src"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="您好,世界!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0.137"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.08" />
    
        <TextView
            android:id="@+id/dest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.835"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintStart_toEndOf="@+id/src"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.08" />
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="复制"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.102"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/src"
            app:layout_constraintVertical_bias="0.513" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="粘贴"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.881"
            app:layout_constraintStart_toEndOf="@+id/button"
            app:layout_constraintTop_toBottomOf="@+id/dest"
            app:layout_constraintVertical_bias="0.512" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    实战效果:


    image.png
    image.png

    相关文章

      网友评论

          本文标题:android之ClipboardManager使用

          本文链接:https://www.haomeiwen.com/subject/tlfitltx.html