diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index caf528e4ba794d6a973e64253ceca3c672fe6b5b..1332daba8108a151989a0ad68341ece09f1de182 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 024da2b21172c97f0151b5abb55d0d77ccbcb314..90ec75d3e7f9caf5bff20761ed898281cb5e80ea 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 0000000000000000000000000000000000000000..9fa8b4bfa1bac599c529b407664ea1dfe277fe99 --- /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 99ab9a4ca9140f4938bdb47c93f4242692426563..8f1fe466582ed06765f13edd885a7a4c34aba4bf 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