Руководство Android QuickContactBadge
View more Tutorials:
Android QuickContactBadge (Значок быстрого контакта) это подкласс ImageView, он отображается как маленький значок (badge), пользователь кликает на него чтобы быстро создать контакт, например добавить номер телефона в контакты, добавить email в контакты,...


Примечание: QuickContactBadge не имеется готовым на Palette окна дизайна, поэтому вам нужно использовать XML код ниже, чтобы добавить QuickContactBadge в интерфейс.
QuickContactBadge
<QuickContactBadge android:id="@+id/quickContactBadge11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_contact_add" ...> </QuickContactBadge>
Как и его название "Quick Contact Badge" (Значок быстрого контакта), вы можете легко создать маленький "Badge" позволяющий пользователю кликнуть на него чтобы добавить контакт, только с несколькими кракими строками кода.
Например: Настройте параметры для QuickContactBadge чтобы добавить определенный номер телефона в контакты. Вам даже не нужно писать обработчик событий OnClick для QuickContactBadge.
this.quickContactBadgePhone = (QuickContactBadge) findViewById(R.id.quickContactBadge_phone); this.quickContactBadgePhone.assignContactFromPhone("+1-555-521-5554", true);

Вы можете увидеть новый телефон добавленный в контакты:

Важные методы у 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)
В данном примере мы имеем 2 QuickContactBadge. Первый QuickContactBadge позволяет пользователю быстро добавить номер телефона в контакты, второй QuickContactBadge позволяет пользователю быстро добавить Email в контакты.


Кнопка "Pick Contact" позволяет пользователю выбрать существующий контакт.

OK, на Android Studio создайте новый project:
- File > New > New Project > Empty Activity
- Name: QuickContactBadgeExample
- Package name: com.example.quickcontactbadgeexample
- Language: Java
Интерфейс примера:

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