Le Tutoriel de Android QuickContactBadge

View more Tutorials:

1- Android QuickContactBadge

Android QuickContactBadge est une sous-classe de ImageView. Il s'affiche sous forme d'un petit badge sur lequel l'utilisateur clique pour créer rapidement un contact, comme par exemple ajouter un numéro de téléphone ou un email à la liste de contacts.
Remarque: QuickContactBadge n'est pas disponible dans Palette de la fenêtre de conception, donc, il faut utiliser le code XML ci-dessous pour ajouter QuickContactBadge dans l'interface.
QuickContactBadge
<QuickContactBadge
    android:id="@+id/quickContactBadge11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon_contact_add" ...>

</QuickContactBadge>
Comme son nom l'indique, avec "Quick Contact Badge", vous pouvez créer facilement un petit "Badge" permettant à l'utilisateur d'ajouter un contact avec une simple clique et un petit code.
Exemple: Définir les paramètres pour un QuickContactBadge afin d'ajouter un numéro de téléphone spécifique dans la liste de contacts. Vous n'avez même pas besoin d'écrire le gestionnaire d'évènements OnClick pour QuickContactBadge.
this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone);
this.quickContactBadgePhone.assignContactFromPhone("+1-555-521-5554", true);
Vous pouvez voir le nouveau numéro de téléphone ajouté dans la liste de contacts:

2- Quelques méthodes importantes

Voici quelques méthodes importantes de QuickContactBadge:
  • assignContactFromPhone(String phoneNumber, boolean lazyLookup, Bundle extras)
  • assignContactFromPhone(String phoneNumber, boolean lazyLookup)
  • assignContactFromEmail(String emailAddress, boolean lazyLookup, Bundle extras)  
  • assignContactFromEmail(String emailAddress, boolean lazyLookup)
  • assignContactUri(Uri contactUri)

3- Exemple de QuickContactBadge

Dans cet exemple, on a deux QuickContactBadge. Le premier QuickContactBadge permet à l'utilisateur d'ajouter rapidement un numéro de téléphone dans la liste de contacts, le deuxième QuickContactBadge permet à l'utilisateur d'ajouter rapidement un email dans la liste de contacts.
Le bouton "Pick Contact" permet à l'utilisateur de sélectionner un contact existant dans la liste.
OK, dans Android Studio, créer un nouveau projet:
  • File > New > New Project > Empty Activity
    • Name: QuickContactBadgeExample
    • Package name: com.example.quickcontactbadgeexample
    • Language: Java
Voici l'interface de l'exemple:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"

    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        android:background="#E2F1D8"
        android:text="Phone Number"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:inputType="textEmailAddress"
        android:text="+1-555-521-5554"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView1" />

    <QuickContactBadge
        android:id="@+id/quickContactBadge_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/icon_contact_add"
        app:layout_constraintStart_toEndOf="@+id/textView_phone"
        app:layout_constraintTop_toBottomOf="@+id/textView1"></QuickContactBadge>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:background="#E2F1D8"
        android:text="Email Contact"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView_phone" />

    <TextView
        android:id="@+id/textView_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:inputType="textEmailAddress"
        android:text="test@gmail.com"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <QuickContactBadge
        android:id="@+id/quickContactBadge_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/icon_contact_add"
        app:layout_constraintStart_toEndOf="@+id/textView_email"
        app:layout_constraintTop_toBottomOf="@+id/textView2"></QuickContactBadge>

    <Button
        android:id="@+id/button_pickContact"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Pick Contact"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView_email"></Button>

    <FrameLayout
        android:id="@+id/frameLayout_holder"
        android:layout_width="0dp"
        android:layout_height="80dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button_pickContact"></FrameLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.quickcontactbadgeexample;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.QuickContactBadge;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    public static final int CONTACT_PICKER_RESULT = 100;

    private TextView textViewEmail;
    private TextView textViewPhone;

    private Button buttonPickContact;
    private FrameLayout frameLayoutHolder;

    private QuickContactBadge quickContactBadgeEmail;
    private QuickContactBadge quickContactBadgePhone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.textViewEmail = (TextView) this.findViewById(R.id.textView_email);
        this.textViewPhone = (TextView) this.findViewById(R.id.textView_phone);

        this.buttonPickContact = (Button) this.findViewById(R.id.button_pickContact);
        this.frameLayoutHolder = (FrameLayout) this.findViewById(R.id.frameLayout_holder);

        this.quickContactBadgeEmail = (QuickContactBadge) findViewById(R.id.quickContactBadge_email);
        this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone);

        int textViewHeight = this.textViewEmail.getLayoutParams().height;
        quickContactBadgeEmail.setMaxHeight(textViewHeight);

        String email = this.textViewEmail.getText().toString(); // test@gmail.com
        String phoneNumber = this.textViewPhone.getText().toString(); // +1-555-521-5554

        // Set Parameters for quickContactBadgeEmail:
        this.quickContactBadgeEmail.assignContactFromEmail(email, true);
        this.quickContactBadgeEmail.setMode(ContactsContract.QuickContact.MODE_SMALL);

        // Set Parameters for quickContactBadgePhone:
        this.quickContactBadgePhone.assignContactFromPhone(phoneNumber, true);

        this.buttonPickContact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pickContactHandler( );
            }
        });

    }

    public void pickContactHandler( ) {
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                ContactsContract.Contacts.CONTENT_URI);
        startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case CONTACT_PICKER_RESULT:
                    Uri contactUri = data.getData();

                    QuickContactBadge badgeLarge = new QuickContactBadge(this);
                    badgeLarge.assignContactUri(contactUri);
                    badgeLarge.setMode(ContactsContract.QuickContact.MODE_LARGE);
                    badgeLarge.setImageResource(R.drawable.icon_contact1);

                    this.frameLayoutHolder.addView(badgeLarge);
                    break;
            }
        }
    }
}

View more Tutorials: