Учебники

Android — буфер обмена

Android предоставляет структуру буфера обмена для копирования и вставки различных типов данных. Данные могут быть текстом, изображениями, данными двоичного потока или другими сложными типами данных.

Android предоставляет библиотеку 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 может принимать эти три формы, и для создания этих форм используются следующие функции.

Sr.No Форма и метод ClipData
1

Текст

newPlainText (метка, текст)

Возвращает объект ClipData, единственный объект ClipData.Item которого содержит текстовую строку.

2

URI

newUri (распознаватель, метка, URI)

Возвращает объект ClipData, единственный объект которого ClipData.Item содержит URI.

3

умысел

newIntent (метка, намерение)

Возвращает объект ClipData, чей единственный объект ClipData.Item содержит Intent.

Текст

newPlainText (метка, текст)

Возвращает объект ClipData, единственный объект ClipData.Item которого содержит текстовую строку.

URI

newUri (распознаватель, метка, URI)

Возвращает объект ClipData, единственный объект которого ClipData.Item содержит URI.

умысел

newIntent (метка, намерение)

Возвращает объект ClipData, чей единственный объект ClipData.Item содержит Intent.

Вставка данных

Чтобы вставить данные, мы сначала получим клип, вызвав метод getPrimaryClip () . И из этого клика мы получим элемент в объекте ClipData.Item. И от объекта мы получим данные. Его синтаксис приведен ниже —

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

Помимо этих методов, существуют классы ClipboardManager для управления каркасом буфера обмена. Эти методы перечислены ниже —

Sr.No Метод и описание
1

getPrimaryClip ()

Этот метод просто возвращает текущий основной клип в буфер обмена

2

getPrimaryClipDescription ()

Этот метод возвращает описание текущего основного клипа в буфер обмена, но не копию его данных.

3

hasPrimaryClip ()

Этот метод возвращает true, если в буфере обмена в данный момент есть основной клип

4

setPrimaryClip (ClipData clip)

Этот метод устанавливает текущий основной клип в буфер обмена

5

setText (текст CharSequence)

Этот метод может быть непосредственно использован для копирования текста в буфер обмена

6

GetText ()

Этот метод может быть непосредственно использован для получения скопированного текста из буфера обмена

getPrimaryClip ()

Этот метод просто возвращает текущий основной клип в буфер обмена

getPrimaryClipDescription ()

Этот метод возвращает описание текущего основного клипа в буфер обмена, но не копию его данных.

hasPrimaryClip ()

Этот метод возвращает true, если в буфере обмена в данный момент есть основной клип

setPrimaryClip (ClipData clip)

Этот метод устанавливает текущий основной клип в буфер обмена

setText (текст CharSequence)

Этот метод может быть непосредственно использован для копирования текста в буфер обмена

GetText ()

Этот метод может быть непосредственно использован для получения скопированного текста из буфера обмена

пример

Вот пример, демонстрирующий использование класса ClipboardManager. Он создает базовое приложение копирования-вставки, которое позволяет вам копировать текст, а затем вставлять его через буфер обмена.

Чтобы поэкспериментировать с этим примером, вы можете запустить его на реальном устройстве или в эмуляторе.

меры Описание
1 Вы будете использовать Android Studio IDE для создания приложения Android и в пакете com.example.sairamkrishna.myapplication.
2 Измените файл src / MainActivity.java, чтобы добавить необходимый код.
3 Измените res / layout / activity_main, чтобы добавить соответствующие компоненты XML
4 Запустите приложение и выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Ниже приводится содержимое измененного основного файла активности src / MainActivity.java .

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>

Давайте попробуем запустить наше приложение, которое мы только что изменили. Я предполагаю, что вы создали свой AVD во время настройки среды. Чтобы запустить приложение из студии Android, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». Eclipse Run Icon значок из панели инструментов. Установщик Android-студии отобразит следующие изображения —

Учебник по работе с буфером обмена для Android

Теперь просто введите любой текст в поле «Текст для копирования» и затем нажмите кнопку «Копировать текст». Будет отображено следующее уведомление, которое показано ниже:

Учебник по работе с буфером обмена для Android

Теперь просто нажмите кнопку вставки, и вы увидите, что скопированный текст теперь вставляется в поле Скопированный текст. Это показано ниже —