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