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

اندروید کتابخانه ی ClipboardManager و ClipData و ClipData.itemرا برای استفاده از چارچوب کپی و پیست کردن ارائه می دهد. برای استفاده از این آبجکت لازم است داده را در یک clip object قرار داده و سپس آن داده را در سیستم کلیپبورد جامع قرار دهید.

برای استفاده از کلیپبورد لازم است که یک آبجکت از ClipboardManager را با فراخوانی روش getSystemService() به عنوان نمونه بیاورید. ترکیب آن در زیر ارائه شده است .

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

کپی کردن داده

کار بعدی که لازم است انجام دهید آوردن نمونه ی آبجکت ClipData با فراخوانی نوع مربوط به روش داده از گروه ClipData می باشد. در مورد داده ی متن روش newPlainText فراخوانده خواهد شد. پس از آن باید داده را به عنوان قطعه ای از آبجکت Clipbaoard Manager قرار دهید. تزکیب آن مانند زیر می باشد.

ClipData myClip;‎

String text = “hello world”;‎

myClip = ClipData.newPlainText(“text”, text);‎

myClipboard.setPrimaryClip(myClip);

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

ردیف

ClipData Form & Method

۱

Text
newPlainText(label, text)

یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یک رشته متن می باشد.

۲

URI
newUri(resolver, label, URI)

یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یک URI می باشد.

۳

Intent
newIntent(label, intent)

یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یکIntent می باشد.

پیست کردن داده (Pasting Data)

برای پیست کردن داده، ابتدا قطعه را با فراخوانی روش getPrimaryClip() به دست می آوریم. و از آن آیتم را در آبجکت ClipData.Item خواهیم گرفت. پس از آن از آبجکت داده را به دست خواهیم آورد. ترکیب آن مانند زیر می باشد.

ClipData abc = myClipboard.getPrimaryClip();‎

ClipData.Item item = abc.getItemAt(0);‎

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

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

ردیف

Method & description

۱

getPrimaryClip()

این روش قطعه ی اولیه ی موجود را روی کلیپبورد باز می گزداند.

۲

getPrimaryClipDescription()

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

۳

hasPrimaryClip()

اگر روی کلیپبورد کلیپ اولیه وجود داشته باشد، این روش درست را بازمی گرداند.

۴

setPrimaryClip(ClipData clip)

این روش کلیپ اولیه را روی کلیپ بورد تنظیم می کند.

۵

setText(CharSequence text)

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

۶

getText()

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

مثال

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

مراحل

توضیحات

۱

برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Clipboard تحت بسته ی com.example.clipboard نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.

۲

فایل src/MainActivity.java را برای افزودن کد لازم تغییر دهید.

۳

res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید.

۴

res/values/string.xml را تغییر دهید تا مولفه های رشته ی مورد نیاز را به آن اضافه کنید.

۵

برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتیجه را بررسی کنید.

در زیر محتوای فایل تغییریافته ی فعالیت اصلی را مشاهده می کنید.

src/com.example.clipboard/MainActivity.java. ‎

package com.example.clipboard;‎

import android.annotation.SuppressLint;‎

import android.app.Activity;‎

import android.content.ClipData;‎

import android.content.ClipboardManager;‎

import android.os.Bundle;‎

import android.view.Menu;‎

import android.view.View;‎

import android.widget.EditText;‎

import android.widget.Toast;‎

public class MainActivity extends Activity {‎

‎ private ClipboardManager myClipboard;‎

‎ private ClipData myClip;‎

‎ private EditText copyField,pasteField;‎

‎ @Override

‎ protected void onCreate(Bundle savedInstanceState) {‎

‎ super.onCreate(savedInstanceState);‎

‎ setContentView(R.layout.activity_main);‎

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

‎ copyField = (EditText)findViewById(R.id.editText1);‎

‎ pasteField = (EditText)findViewById(R.id.editText2);‎

‎ }‎

‎ @SuppressLint(“NewApi”)‎

‎ public void copy(View view){‎

‎ String text = copyField.getText().toString();‎

‎ myClip = ClipData.newPlainText(“text”, text);‎

‎ myClipboard.setPrimaryClip(myClip);‎

‎ Toast.makeText(getApplicationContext(), “Text Copied”, ‎

‎ Toast.LENGTH_SHORT).show();‎

‎ }‎

‎ @SuppressLint(“NewApi”)‎

‎ public void paste(View view){‎

‎ ClipData abc = myClipboard.getPrimaryClip();‎

‎ ClipData.Item item = abc.getItemAt(0);‎

‎ String text = item.getText().toString();‎

‎ pasteField.setText(text);‎

‎ Toast.makeText(getApplicationContext(), “Text Pasted”, ‎

‎ Toast.LENGTH_SHORT).show();‎

‎ }‎

‎ @Override

‎ public boolean onCreateOptionsMenu(Menu menu) {‎

‎ // Inflate the menu; this adds items to the action bar ‎if it is present.‎

‎ getMenuInflater().inflate(R.menu.main, menu);‎

‎ return true;‎

‎ }‎

‎}

در زیر محتوای xml تغییر یافته ی res/layout/activity_main.xml را مشاهده می کنید.

‎ ‎

‎ ‎

‎ ‎

‎ ‎