استفاده از کلیپ بورد Clipboard در برنامه نویسی اندروید

اندروید چارچوب کلیپ بورد را برای کپی و چسباندن انواع مختلف داده ها فراهم می کند. داده ها می توانند متن، تصاویر، داده های جریان باینری یا دیگر انواع داده های پیچیده باشند. اندروید کتابخانه ClipboardManager و ClipData و ClipData.item را برای استفاده از چارچوب کپی و چسباندن ارائه داده است.

برای استفاده از این چارچوب، باید داده ها را در شی کلیپ قرار بدهید و سپس آن شی را در کلیپ بورد گسترده سیستم قرار دهید. برای استفاده از کلیپ بورد، باید یک شی از ClipboardManager را با فراخوانی متد ()getSystemService نمونه سازی کنید. به این شکل :

ClipboardManager myClipboard;
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

 

کپی کردن داده ها در کلیپ بورد

کاری که باید انجام دهید این است که شی ClipData را با فراخوانی نوع مربوطه از متد داده کلاس ClipData نمونه سازی کنید. در مورد داده های متنی، متد newPlainText فراخوانی می شود. پس از آن باید آن داده را به عنوان کلیپ شی Clipboard Manager تنظیم کنید. به این شکل :

ClipData myClip;
String text = "hello world";
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);

 

اشکال شی ClipData

شی ClipData می تواند این سه شکل را داشته باشد و از توابع زیر برای ایجاد آن فرم ها استفاده می شود.

فرم ClipData و متد ردیف
Text

newPlainText(label, text)

یک شی ClipData را برمی‌گرداند که تک شی ClipData.Item آن شامل یک رشته متن است.

1
URI

newUri(resolver, label, URI)

یک شی ClipData را برمی‌گرداند که تک شی ClipData.Item آن حاوی یک URI است.

2
Intent

newIntent(label, intent)

یک شی ClipData را برمی‌گرداند که تک شی ClipData.Item آن حاوی یک Intent است.

3

چسباندن داده ها

برای چسباندن داده ها، ابتدا با فراخوانی متد getPrimaryClip() کلیپ را دریافت می کنیم.  و از آن بر اساس پوزیشن یک شی ClipData.Item دریافت می کنیم و حالا می توانیم از این آبجکت داده ها را دریافت کنیم. به این شکل :

ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();

متد های مدیریت کلیپ بورد

به غیر از این متدها، متدهای دیگری نیز توسط کلاس ClipboardManager برای مدیریت چارچوب کلیپ بورد ارائه شده است. این متد ها در پایین لیست شده اند :

متد و توضیحات ردیف
getPrimaryClip()

این متد فقط کلیپ اصلی فعلی را در کلیپ بورد برمی گرداند.

1
getPrimaryClipDescription()

این متد توصیفی از کلیپ اصلی فعلی را در کلیپ بورد برمی گرداند، اما یک کپی از داده های آن را برمی گرداند.

2
hasPrimaryClip()

اگر در حال حاضر یک کلیپ اصلی در کلیپ بورد وجود داشته باشد، این متد true را برمی گرداند.

3
setPrimaryClip(ClipData clip)

این متد کلیپ اصلی فعلی را در کلیپ بورد تنظیم می کند.

4
setText(CharSequence text)

از این متد می توان مستقیماً برای کپی متن در کلیپ بورد استفاده کرد.

5
getText()

از این متد می توان مستقیماً برای دریافت متن کپی شده از کلیپ بورد استفاده کرد.

6

مثال

در این بخش مثالی آورده ایم که نحوه استفاده از کلاس ClipboardManager را نشان می دهد. این یک برنامه کپی پیست اولیه ایجاد می کند که به شما امکان می دهد متن را کپی کنید و سپس آن را از طریق Clipboard جایگذاری کنید. برای آزمایش با این مثال، می‌توانید آن را روی یک دستگاه واقعی یا در یک شبیه‌ساز اجرا و تست کنید.

توضیحات مراحل
ابتدا یک پروژه جدید در اندروید استودیو با پکیج نیم دلخواه ایجاد کنید. 1
کد های موجود در فایل MainActivity.Java را مطابق کد های که در پایین آورده ایم تغییر بدهید. 2
کد های موجود در فایل activity_main.xml را مطابق کد های که در پایین آورده ایم تغییر بدهید. 3
پروژه خود را بر روی دستگاه واقعی اجرا و تست کنید. 4

کدهای فایل MainActivity.java

package com.foray.articlelib;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    EditText ed1, ed2;
    Button b1, b2;

    private ClipboardManager myClipboard;
    private ClipData myClip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ed1 = findViewById(R.id.editText);
        ed2 = findViewById(R.id.editText2);

        b1 = findViewById(R.id.button);
        b2 = findViewById(R.id.button2);

        myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

        b1.setOnClickListener(v -> {
            String text;
            text = ed1.getText().toString();

            myClip = ClipData.newPlainText("text", text);
            myClipboard.setPrimaryClip(myClip);

            Toast.makeText(getApplicationContext(), "متن کپی شد",
                    Toast.LENGTH_SHORT).show();
        });

        b2.setOnClickListener(v -> {
            ClipData abc = myClipboard.getPrimaryClip();
            ClipData.Item item = abc.getItemAt(0);

            String text = item.getText().toString();
            ed2.setText(text);

            Toast.makeText(getApplicationContext(), "متن جایگذاری شد",
                    Toast.LENGTH_SHORT).show();
        });
    }

}

 

کدهای فایل activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="32dp"
    android:gravity="center|top">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="استفاده از کلیپ بورد"
        android:textSize="35dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textview"
        android:layout_centerHorizontal="true"
        android:text="7Cloner.com"
        android:textColor="#000000"
        android:textSize="35dp" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="150dp"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:src="@drawable/abc" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:hint="متنی را که میخواهید کپی شود اینجا وارد کنید"
        android:layout_below="@+id/imageView"
        android:layout_alignLeft="@+id/imageView"
        android:layout_alignStart="@+id/imageView" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText"
        android:layout_alignStart="@+id/editText"
        android:layout_alignLeft="@+id/editText"
        android:layout_alignEnd="@+id/editText"
        android:layout_alignRight="@+id/editText"
        android:hint="متن کپی شده در این بخش نمایش داده میشود" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_alignStart="@+id/editText2"
        android:layout_alignLeft="@+id/editText2"
        android:text="کپی کن" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_alignEnd="@+id/editText2"
        android:layout_alignRight="@+id/editText2"
        android:text="پیست کن" />

</RelativeLayout>

 

استفاده از کلیپ بورد Clipboard در برنامه نویسی اندروید استفاده از کلیپ بورد Clipboard در برنامه نویسی اندروید استفاده از کلیپ بورد Clipboard در برنامه نویسی اندروید

سرآخر طبق تصاویری که در بالا نشان داده میشود, قادر خواهید بود به راحتی یک متن را کپی و پیست کنید.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


۹۴۶
۰
۱۳ آذر ۱۳۹۹

درباره فایل Robots.txt

این فایل ربات های خزنده موتور های جستجو را راهنمایی می کنند و به آنان می فهماند که چه دایرکتوری و لینک هایی قابل بررسی و چه دایرکتوری و لینک هایی غیرقابل برررسی می باشند...


۷۵۵
۰
۲ دی ۱۳۹۹

وردپرس

وردپرس یک سیستم مدیریت محتوای قوی می باشد که با استفاده از آن می توان وب سایت ها و وبلاگ های گوناگونی با هر شرایطی را طراحی کرد چرا که این سیستم و ...


۸۰۸
۰
۱۳ آذر ۱۳۹۹

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۱۲
۰
۱۲ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52