From d792c1a121744632ee5b438b3ca8caed6e1a8f9b Mon Sep 17 00:00:00 2001 From: shidqizh <shidqizh@gmail.com> Date: Mon, 1 Apr 2024 15:22:06 +0700 Subject: [PATCH] feat: maps --- app/src/main/AndroidManifest.xml | 9 +++++ .../ui/transaction/TransactionFragment.kt | 11 +++++- .../com/atm/bondowowo/utils/GoogleMapsUtil.kt | 35 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/atm/bondowowo/utils/GoogleMapsUtil.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index caf528e..1332dab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,6 +64,15 @@ </provider> + + </application> + <queries> + <intent> + <action android:name="android.intent.action.VIEW" /> + <data android:scheme="geo" /> + </intent> + </queries> + </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionFragment.kt b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionFragment.kt index 024da2b..90ec75d 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionFragment.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionFragment.kt @@ -14,6 +14,7 @@ import com.atm.bondowowo.R import com.atm.bondowowo.adapter.TransactionAdapter import com.atm.bondowowo.data.local.database.AppDatabase import com.atm.bondowowo.data.local.entity.TransactionEntity +import com.atm.bondowowo.utils.GoogleMapsUtil import com.google.android.material.floatingactionbutton.FloatingActionButton @@ -60,7 +61,15 @@ class TransactionFragment : Fragment() { } else if (which == 1) { database.transactionDao().delete(list[position]) getData() - } else { + } + else if(which == 2){ + list[position].id?.let { + GoogleMapsUtil.openGoogleMaps(requireContext(), + it + ) + } + } + else { dialog.dismiss() } } diff --git a/app/src/main/java/com/atm/bondowowo/utils/GoogleMapsUtil.kt b/app/src/main/java/com/atm/bondowowo/utils/GoogleMapsUtil.kt new file mode 100644 index 0000000..9fa8b4b --- /dev/null +++ b/app/src/main/java/com/atm/bondowowo/utils/GoogleMapsUtil.kt @@ -0,0 +1,35 @@ +package com.atm.bondowowo.utils + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.widget.Toast +import com.atm.bondowowo.data.local.database.AppDatabase +import com.atm.bondowowo.data.local.entity.TransactionEntity + +object GoogleMapsUtil { + + fun openGoogleMaps(context: Context, transactionId: Int) { + val database = AppDatabase.getInstance(context.applicationContext) + val destinationName = getDestinationNameFromDatabase(database, transactionId) + + if (!destinationName.isNullOrEmpty()) { + val uri = Uri.parse("geo:0,0?q=$destinationName") + val mapIntent = Intent(Intent.ACTION_VIEW, uri) + mapIntent.setPackage("com.google.android.apps.maps") + + if (mapIntent.resolveActivity(context.packageManager) != null) { + context.startActivity(mapIntent) + } else { + Toast.makeText(context, "Google Maps app not found", Toast.LENGTH_SHORT).show() + } + } else { + Toast.makeText(context, "Destination not found", Toast.LENGTH_SHORT).show() + } + } + + private fun getDestinationNameFromDatabase(database: AppDatabase, transactionId: Int): String? { + val transaction: TransactionEntity? = database.transactionDao().get(transactionId) + return transaction?.lokasi + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 99ab9a4..8f1fe46 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,6 +10,7 @@ <string-array name="transaction_option"> <item>Edit</item> <item>Delete</item> + <item>Open in maps</item> <item>Cancel</item> </string-array> </resources> \ No newline at end of file -- GitLab