Android - Appunti

Android fornisce il framework degli appunti per copiare e incollare diversi tipi di dati. I dati possono essere testo, immagini, dati di flusso binario o altri tipi di dati complessi.

Android fornisce la libreria di ClipboardManager e ClipData e ClipData.item per utilizzare il framework di copia e incolla.Per utilizzare il framework degli appunti, è necessario inserire i dati nell'oggetto clip e quindi inserire quell'oggetto negli appunti a livello di sistema.

Per utilizzare gli appunti, è necessario creare un'istanza di un oggetto di ClipboardManager chiamando il file getSystemService()metodo. La sua sintassi è data di seguito:

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

Copia dei dati

La prossima cosa che devi fare è creare un'istanza dell'oggetto ClipData chiamando il rispettivo tipo di metodo di dati della classe ClipData. In caso di dati di testo, il filenewPlainTextmetodo verrà chiamato. Dopodiché devi impostare quei dati come clip dell'oggetto Clipboard Manager. La sua sintassi è data di seguito:

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

L'oggetto ClipData può assumere questi tre moduli e le seguenti funzioni vengono utilizzate per creare quei moduli.

Suor n Modulo e metodo ClipData
1

Text

newPlainText (etichetta, testo)

Restituisce un oggetto ClipData il cui singolo oggetto ClipData.Item contiene una stringa di testo.

2

URI

newUri (resolver, label, URI)

Restituisce un oggetto ClipData il cui singolo oggetto ClipData.Item contiene un URI.

3

Intent

newIntent (label, intent)

Restituisce un oggetto ClipData il cui singolo oggetto ClipData.Item contiene un Intent.

Incollare i dati

Per incollare i dati, otterremo prima la clip chiamando il file getPrimaryClip()metodo. E da quel clic otterremo l'elemento nell'oggetto ClipData.Item. E dall'oggetto otterremo i dati. La sua sintassi è data di seguito:

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

Oltre a questi metodi, ci sono altri metodi forniti dalla classe ClipboardManager per la gestione del framework degli appunti. Questi metodi sono elencati di seguito:

Suor n Metodo e descrizione
1

getPrimaryClip()

Questo metodo restituisce solo la clip principale corrente negli appunti

2

getPrimaryClipDescription()

Questo metodo restituisce una descrizione della clip principale corrente negli appunti ma non una copia dei suoi dati.

3

hasPrimaryClip()

Questo metodo restituisce true se è attualmente presente una clip principale negli appunti

4

setPrimaryClip(ClipData clip)

Questo metodo imposta la clip primaria corrente negli appunti

5

setText(CharSequence text)

Questo metodo può essere utilizzato direttamente per copiare il testo negli appunti

6

getText()

Questo metodo può essere utilizzato direttamente per ottenere il testo copiato dagli appunti

Esempio

Ecco un esempio che mostra l'uso della classe ClipboardManager. Crea un'applicazione di base copia incolla che consente di copiare il testo e quindi incollarlo tramite gli appunti.

Per sperimentare questo esempio, puoi eseguirlo su un dispositivo reale o in un emulatore.

Passi Descrizione
1 Utilizzerai l'IDE di Android Studio per creare un'applicazione Android e in un pacchetto com.example.sairamkrishna.myapplication.
2 Modifica il file src / MainActivity.java per aggiungere il codice necessario.
3 Modifica res / layout / activity_main per aggiungere i rispettivi componenti XML
4 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati

Di seguito è riportato il contenuto del file di attività principale modificato 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();
         }
      });
   }

}

Di seguito è riportato il contenuto modificato del file 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>

Di seguito è riportato il contenuto del file res/values/string.xml.

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

Di seguito è riportato il contenuto di AndroidManifest.xml file.

<?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>

Proviamo a eseguire la nostra applicazione che abbiamo appena modificato. Presumo che tu abbia creato il tuoAVDdurante l'impostazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Il programma di installazione di Android Studio mostrerà le seguenti immagini:

Ora inserisci qualsiasi testo nel campo Testo da copiare e quindi seleziona il pulsante Copia testo. Verrà visualizzata la seguente notifica mostrata di seguito:

Ora basta premere il pulsante Incolla e vedrai che il testo che è stato copiato è ora incollato nel campo del Testo copiato. È mostrato di seguito -