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