mardi 1 novembre 2011

Tutorial Android : Programmation du copier coller, du clipboard

Programmation Android du copier coller, copy paste :

Précautions : On utilise ici les APIs Android 3.0 ou plus. Nous copierons dans ce tutorial du format texte, il est également possible de copier des URIs, des Intents.








Notre petite application constituée de 2 champs et de 2 boutons permet dans le champ supérieur de saisir un texte, grâce au bouton "copy" de copier le texte dans le "clipboard". Ensuite grâce au bouton "Paste" on extrait le texte du "clipboard" et on le copiera dans le champ en bas du formulaire.


1. Le ClipboardManager

ClipboardManager clipboard;
clipboard = (ClipboardManager)getSystemService( this.CLIPBOARD_SERVICE );

Celui-ci va nous donner accès au "clipboard".


2. On copie le texte du premier champ pour le mettre dans le "clipboard"

ClipData clip = ClipData.newPlainText( "texte_copied",    
          edit_source.getText().toString() );
clipboard.setPrimaryClip( clip );


3. On extrait le texte du "clipboard" pour le copier dans le champ inférieur

if (clipboard.hasPrimaryClip()) {
    ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
    CharSequence pasteData = item.getText();
    if( pasteData != null )
edit_target.setText( pasteData );
}


4. Rien de spécifique à prévoir dans le fichier AndroidManifest.xml


Voici le source de l'activité en entier :

public class CopyPaste_ltmActivity extends Activity {
    Button btn_copy;
    Button btn_paste;
    EditText edit_source;
    EditText edit_target;
    ClipboardManager clipboard;
    ClipData clip;
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btn_copy = (Button)findViewById( R.id.btn_copy );
        btn_paste = (Button)findViewById( R.id.btn_paste );
        edit_source = (EditText)findViewById( R.id.editSource );
        edit_target = (EditText)findViewById( R.id.editTarget );
        
        clipboard = (ClipboardManager)getSystemService( this.CLIPBOARD_SERVICE );
        
        // copy button
        btn_copy.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
    ClipData clip = ClipData.newPlainText( "texte_copied",                          
                  edit_source.getText().toString() );           
            clipboard.setPrimaryClip( clip );
}
});
        
        // paste button
        btn_paste.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
            if (clipboard.hasPrimaryClip()) {
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
CharSequence pasteData = item.getText();
if( pasteData != null )
edit_target.setText( pasteData );
    }
}});
    }
}

Aucun commentaire:

Enregistrer un commentaire