From 1b07e66bf0ab76bec620e9cb1048b55a4743eb6c Mon Sep 17 00:00:00 2001 From: naufal <89512179+nomsf@users.noreply.github.com> Date: Fri, 5 Apr 2024 16:57:18 +0700 Subject: [PATCH] braodcast --- .../com/example/myapplication/MainActivity.kt | 13 +++++++++ .../ui/settings/SettingsFragment.kt | 10 +++++-- .../util/AppBroadcastReceiver.kt | 28 +++++++++++++++++++ 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt diff --git a/app/src/main/java/com/example/myapplication/MainActivity.kt b/app/src/main/java/com/example/myapplication/MainActivity.kt index 78a6337..ccea2b3 100644 --- a/app/src/main/java/com/example/myapplication/MainActivity.kt +++ b/app/src/main/java/com/example/myapplication/MainActivity.kt @@ -2,6 +2,7 @@ package com.example.myapplication import android.content.Context import android.content.Intent +import android.content.IntentFilter import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.os.Bundle @@ -23,12 +24,14 @@ import com.example.myapplication.util.EventBus import com.example.myapplication.util.SecretPreference import java.util.concurrent.TimeUnit import com.example.myapplication.ui.settings.SettingsViewModel +import com.example.myapplication.util.AppBroadcastReceiver class MainActivity : AppCompatActivity(){ private lateinit var binding: ActivityMainBinding private lateinit var secretPreference : SecretPreference private val checkConnection by lazy { CheckConnection(application) } private val connected : MutableLiveData<Boolean> = MutableLiveData(true) + private lateinit var receiver: AppBroadcastReceiver override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -52,6 +55,11 @@ class MainActivity : AppCompatActivity(){ setupActionBarWithNavController(navController, appBarConfiguration) navView.setupWithNavController(navController) + receiver = AppBroadcastReceiver() + val filter = IntentFilter("com.example.myapplication.ui.transactions.ADD_TRANSACTION") + registerReceiver(receiver, filter) + + // val loginIntent = Intent(this, LoginActivity::class.java) // startActivity(loginIntent) } @@ -94,6 +102,11 @@ class MainActivity : AppCompatActivity(){ } } } + + override fun onDestroy() { + super.onDestroy() + unregisterReceiver(receiver) + } fun updateConnection(value: Boolean) { connected.value = value } diff --git a/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt index a506760..474f66d 100644 --- a/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt @@ -19,6 +19,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.example.myapplication.MainActivity import com.example.myapplication.R import com.example.myapplication.databinding.FragmentSettingsBinding +import kotlin.random.Random class SettingsFragment : Fragment() { private var _binding: FragmentSettingsBinding? = null @@ -86,10 +87,13 @@ class SettingsFragment : Fragment() { } + val titleList = listOf("Makan", "Minum", "Date", "Halo", "Cincin") + randomizeButton.setOnClickListener { - val intent = Intent("RANDOMIZE") - intent.putExtra("val", "val") - requireContext().sendBroadcast(intent) + val map = mapOf("title" to Random.nextInt(0, 4 + 1), "nominal" to Random.nextInt(1,1000000 + 1)) + val intent = Intent("com.example.myapplication.ui.transactions.ADD_TRANSACTION") + intent.putExtra("map", HashMap(map)) + context?.sendBroadcast(intent) } return root diff --git a/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt b/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt new file mode 100644 index 0000000..314a13f --- /dev/null +++ b/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt @@ -0,0 +1,28 @@ +package com.example.myapplication.util + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.example.myapplication.repository.TransactionRepository +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +class AppBroadcastReceiver : BroadcastReceiver(){ + private lateinit var transactionRepository : TransactionRepository + override fun onReceive(context: Context?, intent: Intent?) { + val map: Map<String, String>? = intent?.getSerializableExtra("map") as? Map<String, String> + transactionRepository = TransactionRepository(context!!) + GlobalScope.launch { + insertToDatabase(map!!, transactionRepository) + } + } + + suspend fun insertToDatabase(map : Map<String, String>, transactionRepository: TransactionRepository){ + transactionRepository.insertTransactionQuery( + title= map.get("title")!!, + nominal = map["nominal"]!!.toString(), + kategori = "Randomize", + lokasi = "Unknown" + ) + } +} \ No newline at end of file -- GitLab