package
com.example.newcanaryproject
import
android.app.Activity
import
android.content.Context
import
android.content.Intent
import
android.Manifest
import
android.content.SharedPreferences
import
android.content.pm.PackageManager
import
android.net.Uri
import
android.os.Bundle
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.material.*
import
androidx.compose.material.icons.Icons
import
androidx.compose.material.icons.filled.Email
import
androidx.compose.material.icons.filled.Password
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.FontFamily
import
androidx.compose.ui.text.font.FontStyle
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.input.PasswordVisualTransformation
import
androidx.compose.ui.text.input.TextFieldValue
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
androidx.core.app.ActivityCompat
import
androidx.core.content.ContextCompat
import
com.example.newcanaryproject.ui.theme.*
class
MainActivity : ComponentActivity() {
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 =
"Runtime permissions"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
}
)
}
) {
runtimePermissions()
}
}
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super
.onRequestPermissionsResult(requestCode, permissions, grantResults)
if
(requestCode ==
101
) {
if
(grantResults.isNotEmpty() && grantResults[
0
] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(
this
,
"Storage permission granted"
, Toast.LENGTH_SHORT).show()
}
else
{
Toast.makeText(
this
,
"Storage permission denied"
, Toast.LENGTH_SHORT).show()
}
}
}
}
@Composable
fun runtimePermissions() {
val activity = (LocalContext.current as? Activity)
Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text =
"Runtime permissions in Android"
,
fontStyle = FontStyle.Normal,
fontWeight = FontWeight.Bold,
color = greenColor,
fontSize =
20
.sp
)
Spacer(modifier = Modifier.height(
50
.dp))
Button(
modifier = Modifier
.fillMaxWidth()
.padding(
20
.dp),
onClick = {
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
101
, activity!!)
}) {
Text(modifier = Modifier.padding(
6
.dp), text =
"Request Storage permission"
)
}
}
}
fun checkPermission(permission: String, requestCode: Int, activity: Activity) {
if
(ContextCompat.checkSelfPermission(
activity,
permission
) == PackageManager.PERMISSION_DENIED
) {
ActivityCompat.requestPermissions(activity, arrayOf(permission), requestCode)
}
else
{
Toast.makeText(activity,
"Permission already granted.."
, Toast.LENGTH_SHORT).show()
}
}