o7planning

Android QuickContactBadge Tutorial

View more Tutorials:

1- Android QuickContactBadge

Android QuickContactBadge is a subclass of ImageView. It displays as a small badge which the user clicks on to quickly create a contact, such as adding a phone number to the contacts, adding an email to the contacts, etc.
Note: QuickContactBadge is not available in the Palette of the design window, so you need to use the following XML code to add QuickContactBadge into the interface.
QuickContactBadge
<QuickContactBadge
    android:id="@+id/quickContactBadge11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon_contact_add" ...>

</QuickContactBadge>
True to its name of "Quick Contact Badge", with just a couple of short lines of code, you can easily create a small "Badge" that allows the user to click on in order to add a contact.
For example: Set the parameters for a QuickContactBadge to add a specific phone number to the contacts. You don't even need to write the OnClick event handler for the QuickContactBadge.
this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone);
this.quickContactBadgePhone.assignContactFromPhone("+1-555-521-5554", true);
You can see the newly added phone number to the contacts:

2- Some important methods

Some important methods of QuickContactBadge are:
  • 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- Example of QuickContactBadge

In this example, we have two QuickContactBadge(s). The first QuickContactBadge allows the user to quickly add a phone number to the contacts, and the second QuickContactBadge allows the user to quickly add an Email to the contacts.
The "Pick Contact" button permits the user to select an existing contact in the contacts.
OK. Now on Android Studio, create a project:
  • File > New > New Project > Empty Activity
    • Name: QuickContactBadgeExample
    • Package name: com.example.quickcontactbadgeexample
    • Language: Java
The interface of the example looks like this:
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:

Maybe you are interested

These are online courses outside the o7planning website that we introduced, which may include free or discounted courses.