¿Cómo usar la API de selección de teléfono en Android?

La API del selector de teléfono se utiliza para detectar los números de teléfono que se utilizan en el teléfono. Al usar esto, puede evitar que los usuarios ingresen manualmente el número de teléfono y pedirles que elijan el número deseado. qué

Implementación paso a paso

Paso 1: crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación

Paso 2: agregue la dependencia al archivo build.gradle y haga clic en «sincronizar ahora»

  implementación “com.google.android.gms:play-services-auth:19.0.0”

Paso 3: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml y consulte el siguiente código. Para simplificar, estamos usando solo un TextView para mostrar el número después de la selección. A continuación se muestra el código para el archivo activity_main.xml .

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"
    tools:context=".MainActivity">
  
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  
    <Button
        android:id="@+id/btn_open"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="Open"
        app:layout_constraintLeft_toLeftOf="@id/tv1"
        app:layout_constraintTop_toBottomOf="@id/tv1" />
  
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 4: Dentro de MainActivity.kt escribe el siguiente código

  • Para recuperar las sugerencias de números de teléfono, primero configure el cuadro de diálogo del selector de sugerencias creando un objeto HintRequest . Luego, pase el objeto HintRequest a credentialsClient.getHintPickerIntent() para obtener la intención de solicitar al usuario que elija un número de teléfono. Finalmente, inicia la intención con startIntentSenderForResult() .
  • El método onActivityResult() ayudará a obtener el número que el usuario ha seleccionado y luego podrá escribir la siguiente lógica para continuar con su aplicación.

Kotlin

import android.content.Intent
import android.content.IntentSender
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.auth.api.credentials.*
  
class MainActivity : AppCompatActivity() {
  
    lateinit var open_btn: Button
    lateinit var tv1: TextView
  
    companion object {
        var CREDENTIAL_PICKER_REQUEST = 1
    }
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        open_btn = findViewById(R.id.btn_open)
        tv1 = findViewById(R.id.tv1)
  
        // set on click listener to button 
        // to open the phone selector dialog
        open_btn.setOnClickListener {
            phoneSelection()
        }
    }
  
    private fun phoneSelection() {
        // To retrieve the Phone Number hints, first, configure
        // the hint selector dialog by creating a HintRequest object.
        val hintRequest = HintRequest.Builder()
            .setPhoneNumberIdentifierSupported(true)
            .build()
  
        val options = CredentialsOptions.Builder()
            .forceEnableSaveDialog()
            .build()
  
        // Then, pass the HintRequest object to 
        // credentialsClient.getHintPickerIntent()
        // to get an intent to prompt the user to 
        // choose a phone number.
        val credentialsClient = Credentials.getClient(applicationContext, options)
        val intent = credentialsClient.getHintPickerIntent(hintRequest)
        try {
            startIntentSenderForResult(
                intent.intentSender,
                CREDENTIAL_PICKER_REQUEST, null, 0, 0, 0, Bundle()
            )
        } catch (e: IntentSender.SendIntentException) {
            e.printStackTrace()
        }
    }
  
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == CREDENTIAL_PICKER_REQUEST && resultCode == RESULT_OK) {
              
            // get data from the dialog which is of type Credential
            val credential: Credential? = data?.getParcelableExtra(Credential.EXTRA_KEY)
              
            // set the received data t the text view
            credential?.apply {
                tv1.text = credential.id
            }
        } else if (requestCode == CREDENTIAL_PICKER_REQUEST && resultCode == CredentialsApi.ACTIVITY_RESULT_NO_HINTS_AVAILABLE) {
            Toast.makeText(this, "No phone numbers found", Toast.LENGTH_LONG).show();
        }
    }
}

Producción:

Enlace Github: https://github.com/introidx/phone-Selecter

Publicación traducida automáticamente

Artículo escrito por introidx y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *