package
com.example.gfgapp
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.app.NotificationManager
import
android.content.Context
import
android.content.Intent
import
android.content.IntentSender
import
android.media.AudioManager
import
android.os.Bundle
import
android.provider.Settings
import
android.util.Log
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.layout.*
import
androidx.compose.material3.*
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.mutableStateOf
import
androidx.compose.runtime.remember
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.tooling.preview.Preview
import
androidx.compose.ui.unit.ExperimentalUnitApi
import
androidx.compose.ui.unit.TextUnit
import
androidx.compose.ui.unit.TextUnitType
import
androidx.compose.ui.unit.dp
import
androidx.core.app.ActivityCompat.startIntentSenderForResult
import
androidx.core.content.ContextCompat.startActivity
import
com.example.gfgapp.ui.theme.GFGAppTheme
import
com.example.gfgapp.ui.theme.greenColor
import
com.google.android.gms.auth.api.credentials.*
class
MainActivity : ComponentActivity() {
@SuppressLint
(
"UnusedMaterial3ScaffoldPaddingParameter"
)
@OptIn
(ExperimentalMaterial3Api::
class
)
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
GFGAppTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background
) {
Scaffold() {
phoneUI()
}
}
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super
.onActivityResult(requestCode, resultCode, data)
if
(requestCode ==
1
&& resultCode == RESULT_OK) {
val credential: Credential? = data?.getParcelableExtra(Credential.EXTRA_KEY)
Toast.makeText(
applicationContext,
"Selected phone number is : "
+ credential!!.id,
Toast.LENGTH_SHORT
).show()
}
else
if
(requestCode ==
1
&& resultCode == CredentialsApi.ACTIVITY_RESULT_NO_HINTS_AVAILABLE) {
Toast.makeText(
this
,
"No phone numbers found"
, Toast.LENGTH_LONG).show();
}
}
}
@OptIn
(ExperimentalUnitApi::
class
)
@Composable
fun phoneUI() {
var ctx = LocalContext.current
Column(
modifier = Modifier.fillMaxWidth().fillMaxHeight(),
verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text =
"Phone Selector API Example"
,
color = greenColor,
fontSize = TextUnit(value = 18F, type = TextUnitType.Sp)
)
Spacer(modifier = Modifier.height(
20
.dp))
Button(
modifier = Modifier.width(
200
.dp), onClick = {
phoneSelection(applicationContext = ctx)
},
colors = ButtonDefaults.buttonColors(containerColor = greenColor)
) {
Text(text =
"Select Phone Number"
, color = Color.White)
}
}
}
private
fun phoneSelection(applicationContext: Context) {
val hintRequest = HintRequest.Builder().setPhoneNumberIdentifierSupported(
true
).build()
val options = CredentialsOptions.Builder().forceEnableSaveDialog().build()
val credentialsClient = Credentials.getClient(applicationContext, options)
val intent = credentialsClient.getHintPickerIntent(hintRequest)
try
{
startIntentSenderForResult(
applicationContext as Activity, intent.intentSender,
1
,
null
,
0
,
0
,
0
, Bundle()
)
}
catch
(e: IntentSender.SendIntentException) {
e.printStackTrace()
}
}