diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3b20a8a7..ee4d9395 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,4 +28,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/spoony/spoony/presentation/placeDetail/PlaceDetailRoute.kt b/app/src/main/java/com/spoony/spoony/presentation/placeDetail/PlaceDetailRoute.kt index 167d1d6c..5fd5495c 100644 --- a/app/src/main/java/com/spoony/spoony/presentation/placeDetail/PlaceDetailRoute.kt +++ b/app/src/main/java/com/spoony/spoony/presentation/placeDetail/PlaceDetailRoute.kt @@ -1,5 +1,10 @@ package com.spoony.spoony.presentation.placeDetail +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Build import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -23,6 +28,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -94,6 +100,8 @@ fun PlaceDetailRoute( addMapCount = data.addMapCount, isScooped = data.isScooped, isAddMap = data.isAddMap, + latitude = data.latitude, + longitude = data.longitude, onScoopButtonClick = viewModel::useSpoon, onAddMapButtonClick = viewModel::updateAddMap, dropdownMenuList = state.dropDownMenuList, @@ -123,6 +131,8 @@ private fun PlaceDetailScreen( addMapCount: Int, isAddMap: Boolean, isScooped: Boolean, + latitude: Double, + longitude: Double, onScoopButtonClick: () -> Unit, onAddMapButtonClick: (Boolean) -> Unit, onBackButtonClick: () -> Unit, @@ -130,6 +140,7 @@ private fun PlaceDetailScreen( onReportButtonClick: (String) -> Unit ) { val scrollState = rememberScrollState() + val context = LocalContext.current Column( modifier = Modifier @@ -226,13 +237,50 @@ private fun PlaceDetailScreen( isAddMap = isAddMap, onScoopButtonClick = onScoopButtonClick, onSearchMapClick = { - // 네이버 길찾기 코드 + searchPlaceNaverMap( + latitude = latitude, + longitude = longitude, + placeName = placeName, + context = context + ) }, onAddMapButtonClick = onAddMapButtonClick ) } } +private fun searchPlaceNaverMap( + latitude: Double, + longitude: Double, + placeName: String, + context: Context +) { + val url = "nmap://place?lat=$latitude&lng=$longitude&name=$placeName&appname=${context.packageName}" + val isInstalled = try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + context.packageManager.getPackageInfo( + "com.nhn.android.nmap", + PackageManager.PackageInfoFlags.of(0) + ) + } else { + context.packageManager.getPackageInfo("com.nhn.android.nmap", 0) + } + true + } catch (e: PackageManager.NameNotFoundException) { + false + } + if (isInstalled) { + Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply { + addCategory(Intent.CATEGORY_BROWSABLE) + context.startActivity(this) + } + } else { + Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.nhn.android.nmap")).apply { + context.startActivity(this) + } + } +} + @Composable private fun PlaceDetailBottomBar( addMapCount: Int,