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

اندروید کتابخانه ی 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
1

Text
newPlainText(label, text)

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

2 URI
newUri(resolver, label, URI)یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یک URI می باشد
3 Intent
newIntent(label, intent)یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یکIntent می باشد

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

برای پیست کردن داده، ابتدا باید با فراخوانی getPrimaryClip() وارد clip شویم و از آن, آیتم را در ClipData شئ Item خواهیم گرفت. پس از آن شئ داده را به دست خواهیم آورد.به ترتیب زیر:

 

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

 

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

شماره متد و توضیحات
1 getPrimaryClip()

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

2 getPrimaryClipDescription()

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

3 hasPrimaryClip()

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

4 setPrimaryClip(ClipData clip)

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

5 setText(CharSequence text)

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

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

مثال

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

مرحله توضیحات
1 برای ایجاد یک برنامه اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان AudioCapture تحت بسته com.example.audiocapture نام گذاری کنید.
2 فایل src/MainActivity.java را برای افزودن کد لازم تغییر دهید.
3 res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید.
4 res/values/string.xml را تغییر دهید تا مولفه های رشته ی مورد نیاز را به آن اضافه کنید.
5 برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتیجه را بررسی کنید.

 

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

 

package com.example.sairamkrishna.myapplication;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
   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 = (EditText) findViewById(R.id.editText);
      ed2 = (EditText) findViewById(R.id.editText2);

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

      myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

      b1.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            String text;
            text = ed1.getText().toString();

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

            Toast.makeText(getApplicationContext(), "Text Copied", 
               Toast.LENGTH_SHORT).show();
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            ClipData abc = myClipboard.getPrimaryClip();
            ClipData.Item item = abc.getItemAt(0);

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

            Toast.makeText(getApplicationContext(), "Text Pasted", 
               Toast.LENGTH_SHORT).show();
         }
      });
   }

}

 

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

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
   
   <TextView android:text="Example" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <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="Copy text"
      android:layout_below="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:hint="paste text"
      android:layout_below="@+id/editText"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Copy text"
      android:id="@+id/button"
      android:layout_below="@+id/editText2"
      android:layout_alignLeft="@+id/editText2"
      android:layout_alignStart="@+id/editText2" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Paste text"
      android:id="@+id/button2"
      android:layout_below="@+id/editText2"
      android:layout_alignRight="@+id/editText2"
      android:layout_alignEnd="@+id/editText2" />
      
</RelativeLayout>

 

در زیر محتوای res/values/string.xml می باشد.

 

<resources>
   <string name="app_name">My Application</string>
</resources>

 

در زیر محتوای فایل AndroidManifest.xml می باشد.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
   </application>

</manifest>

 

اجازه بدهید برنامه ی Clipboard شما را اجرا کنیم. فرض می کنیم که شما AVD خود را در هنگام انجام تنظیمات محیط ایجاد کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکون Run از تولبار کلیک کنید. Eclipse برنامه را روی AVD شما نصب می کند و آن را شروع می کند و اگر همه چیز در مورد تنظیمات و برنامه ی شما خوب باشد، پنجره ی Emulator زیر را نمایش خواهد داد.

Anroid clipboard Tutorial

اکنون متنی در قسمت Text to copy وارد کنید و سپس copy text را انتخاب کنید که اخطاریه ی زیر نمایش داده خواهد شد.

Anroid clipboard Tutorial

اکنون دکمه ی paste را انتخاب کنید. خواهید دید که متن کپی شده در فیلد Copied text پیست می شود که در زیر نمایش داده شده است.

Anroid clipboard Tutorial