package
com.example.newcanaryproject
import
android.Manifest
import
android.app.Activity
import
android.content.Context
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.database.Cursor
import
android.net.Uri
import
android.os.Build
import
android.os.Bundle
import
android.provider.ContactsContract
import
android.telephony.SmsManager
import
android.util.Log
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.annotation.RequiresApi
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.*
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.TextStyle
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
androidx.core.app.ActivityCompat
import
androidx.core.app.ActivityCompat.startActivityForResult
import
androidx.core.content.ContextCompat
import
com.example.newcanaryproject.ui.theme.NewCanaryProjectTheme
import
com.example.newcanaryproject.ui.theme.greenColor
class
MainActivity : ComponentActivity() {
var contactName by mutableStateOf(
""
)
var contactNumber by mutableStateOf(
""
)
@RequiresApi
(Build.VERSION_CODES.M)
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
contactPicker(
context = LocalContext.current, contactName, contactNumber
)
}
}
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super
.onActivityResult(requestCode, resultCode, data)
if
(resultCode != Activity.RESULT_OK)
return
if
(requestCode ===
1
&& data !=
null
) {
val contactData: Uri? = data.data
val cursor: Cursor = managedQuery(contactData,
null
,
null
,
null
,
null
)
cursor.moveToFirst()
val number: String =
cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER))
val name: String =
cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))
contactName = name
contactNumber = number
}
}
}
@Composable
fun contactPicker(
context: Context,
contactName: String,
contactNumber: String,
) {
val activity = LocalContext.current as Activity
Column(
modifier = Modifier
.fillMaxSize()
.padding(all =
30
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Text(
text =
"Contact in Android"
,
color = greenColor, fontSize =
20
.sp, fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(text = contactName, fontSize =
18
.sp, fontWeight = FontWeight.Bold)
Spacer(modifier = Modifier.height(
20
.dp))
Text(text = contactNumber, fontSize =
18
.sp, fontWeight = FontWeight.Bold)
Spacer(modifier = Modifier.height(
20
.dp))
Button(
onClick = {
if
(hasContactPermission(context)) {
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
startActivityForResult(activity, intent,
1
,
null
)
}
else
{
requestContactPermission(context, activity)
}
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Pick Contact"
)
}
}
}
fun hasContactPermission(context: Context): Boolean {
return
ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) ==
PackageManager.PERMISSION_GRANTED;
}
fun requestContactPermission(context: Context, activity: Activity) {
if
(!hasContactPermission(context)) {
ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.READ_CONTACTS),
1
)
}
}