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, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». значок из панели инструментов. Установщик Android-студии отобразит следующие изображения —
Теперь просто введите любой текст в поле «Текст для копирования» и затем нажмите кнопку «Копировать текст». Будет отображено следующее уведомление, которое показано ниже:
Теперь просто нажмите кнопку вставки, и вы увидите, что скопированный текст теперь вставляется в поле Скопированный текст. Это показано ниже —