import
android.content.BroadcastReceiver
import
android.content.Context
import
android.content.Intent
import
android.content.IntentFilter
import
android.os.Bundle
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
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.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
androidx.localbroadcastmanager.content.LocalBroadcastManager
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 =
"Local Broad Cast Manager"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
broadcastManager(LocalContext.current)
}
}
}
}
}
}
@Composable
fun broadcastManager(ctx: Context) {
val broadCastMsg = remember {
mutableStateOf(
"Welcome"
)
}
val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent) {
val message = intent.getStringExtra(
"message"
)
broadCastMsg.value = message!!
}
}
LocalBroadcastManager.getInstance(ctx).registerReceiver(
broadcastReceiver, IntentFilter(
"custom-action-local-broadcast"
)
)
Column(
modifier = Modifier
.fillMaxSize()
.fillMaxHeight()
.fillMaxWidth()
.padding(
5
.dp),
horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center
) {
Text(
text =
"Local Broad Cast Manager in Android"
,
textAlign = TextAlign.Center,
fontWeight = FontWeight.Bold,
fontSize =
20
.sp,
color = greenColor
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text = broadCastMsg.value,
textAlign = TextAlign.Center,
fontSize =
18
.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(
4
.dp)
)
Spacer(modifier = Modifier.height(
20
.dp))
Button(onClick = {
val intent = Intent(
"custom-action-local-broadcast"
)
intent.putExtra(
"message"
,
"Welcome\nto\nGeeks For Geeks"
)
LocalBroadcastManager.getInstance(ctx).sendBroadcast(intent)
}) {
Text(text =
"Send Broadcast"
)
}
}
}