Android - Presse-papiers

Android fournit le cadre du presse-papiers pour copier et coller différents types de données. Les données peuvent être du texte, des images, des données de flux binaire ou d'autres types de données complexes.

Android fournit la bibliothèque de ClipboardManager et ClipData et ClipData.item pour utiliser le cadre de copie et de collage.Pour utiliser le cadre de presse-papiers, vous devez placer les données dans l'objet clip, puis placer cet objet dans le presse-papiers à l'échelle du système.

Pour utiliser le presse-papiers, vous devez instancier un objet de ClipboardManager en appelant le getSystemService()méthode. Sa syntaxe est donnée ci-dessous -

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

Copie de données

La prochaine chose que vous devez faire est d'instancier l'objet ClipData en appelant le type respectif de méthode de données de la classe ClipData. En cas de données textuelles, lenewPlainTextLa méthode sera appelée. Après cela, vous devez définir ces données comme le clip de l'objet Clipboard Manager.Sa syntaxe est donnée ci-dessous -

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

L'objet ClipData peut prendre ces trois formes et les fonctions suivantes sont utilisées pour créer ces formulaires.

Sr. Non Formulaire et méthode ClipData
1

Text

newPlainText (étiquette, texte)

Renvoie un objet ClipData dont le seul objet ClipData.Item contient une chaîne de texte.

2

URI

newUri (résolveur, étiquette, URI)

Renvoie un objet ClipData dont le seul objet ClipData.Item contient un URI.

3

Intent

newIntent (étiquette, intention)

Renvoie un objet ClipData dont le seul objet ClipData.Item contient un Intent.

Coller des données

Afin de coller les données, nous allons d'abord obtenir le clip en appelant le getPrimaryClip()méthode. Et à partir de ce clic, nous obtiendrons l'élément dans l'objet ClipData.Item. Et à partir de l'objet, nous obtiendrons les données. Sa syntaxe est donnée ci-dessous -

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

En dehors de ces méthodes, il existe d'autres méthodes fournies par la classe ClipboardManager pour gérer l'infrastructure du presse-papiers. Ces méthodes sont énumérées ci-dessous -

Sr. Non Méthode et description
1

getPrimaryClip()

Cette méthode renvoie simplement le clip principal actuel dans le presse-papiers

2

getPrimaryClipDescription()

Cette méthode renvoie une description du clip principal actuel dans le presse-papiers mais pas une copie de ses données.

3

hasPrimaryClip()

Cette méthode renvoie true s'il y a actuellement un clip principal dans le presse-papiers

4

setPrimaryClip(ClipData clip)

Cette méthode définit le clip principal actuel dans le presse-papiers

5

setText(CharSequence text)

Cette méthode peut être directement utilisée pour copier du texte dans le presse-papiers

6

getText()

Cette méthode peut être directement utilisée pour récupérer le texte copié du presse-papiers

Exemple

Voici un exemple illustrant l'utilisation de la classe ClipboardManager. Il crée une application de base de copier-coller qui vous permet de copier le texte, puis de le coller via le presse-papiers.

Pour expérimenter cet exemple, vous pouvez l'exécuter sur un appareil réel ou dans un émulateur.

Pas La description
1 Vous utiliserez l'IDE de studio Android pour créer une application Android et sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter le code nécessaire.
3 Modifiez le res / layout / activity_main pour ajouter les composants XML respectifs
4 Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats

Voici le contenu du fichier d'activité principal modifié 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();
         }
      });
   }

}

Voici le contenu modifié du 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>

Voici le contenu de la res/values/string.xml.

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

Voici le contenu de AndroidManifest.xml fichier.

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

Essayons d'exécuter notre application que nous venons de modifier. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Le programme d'installation du studio Android affichera les images suivantes -

Maintenant, entrez simplement n'importe quel texte dans le champ Texte à copier, puis sélectionnez le bouton Copier le texte. La notification suivante s'affichera, illustrée ci-dessous -

Maintenant, appuyez simplement sur le bouton Coller, et vous verrez que le texte qui est copié est maintenant collé dans le champ Texte copié. Il est montré ci-dessous -