اندروید چارچوب کلیپ بورد را برای کپی و چسباندن انواع مختلف داده ها فراهم می کند. داده ها می توانند متن، تصاویر، داده های جریان باینری یا دیگر انواع داده های پیچیده باشند. اندروید کتابخانه 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>
سرآخر طبق تصاویری که در بالا نشان داده میشود, قادر خواهید بود به راحتی یک متن را کپی و پیست کنید.