페이지 이동경로
  • 문서>
  • 카카오내비>
  • Android

카카오내비

Android

이 문서는 Kakao SDK for Android(이하 Android SDK)를 사용한 카카오내비 API 구현 방법을 소개합니다.

시작하기 전에

카카오내비 앱 설치 여부 확인

카카오내비 API는 길 안내의 navigateIntent()와 목적지 공유의 shareDestinationIntent() 두 가지 주요 기능을 제공합니다.

navigateIntent() 또는 shareDestinationIntent()는 카카오내비 앱으로 목적지 공유 및 길 안내 기능을 실행하는 Intent를 반환합니다. 카카오내비 앱이 설치되어 있을 경우에는 앱을 호출하고, 그렇지 않을 경우에는 기본 브라우저로 설치 페이지를 엽니다.

사용자 기기에 카카오내비 앱이 설치되어 있는지 확인하려면 isKakaoNaviInstalled() API를 사용합니다. 다음은 카카오내비 앱 실행 여부를 출력해보는 예제입니다.

if (NaviClient.instance.isKakaoNaviInstalled(context)) {
    Log.i(TAG, "카카오내비 앱으로 길 안내 가능")
} else {
    Log.i(TAG, "카카오내비 미설치")
}

길 안내하기

기본 정보
레퍼런스 앱 설정
[SDK] navigateIntent()
[SDK] Location
[SDK] NaviOption
설치
초기화
권한 사전 설정 카카오 로그인 동의항목
- 플랫폼 등록 - -

카카오내비를 실행하여 목적지까지의 길을 안내합니다.

웹 길 안내 제공 종료

Android SDK 2.8.4부터 카카오내비 앱 미설치 시 웹에서 길 안내를 실행하는 기능을 더 이상 제공하지 않습니다. 카카오내비 앱이 설치돼 있지 않은 경우에는 설치 페이지로 이동합니다. 이전 버전에서 제공하는 웹 길 안내 기능 또한 추후 제공 종료될 예정이므로, 최신 버전 업데이트를 권장합니다.

요청

NaviClientnavigateIntent()를 호출해 Intent를 반환 받아 실행하도록 구현합니다.

navigateIntent() 호출 시 목적지 정보를 담은 Location, 검색 조건을 담은 NaviOption 객체를 전달해야 합니다. NaviOption에는 원하는 검색 조건만 지정하여 요청할 수 있습니다. 자세한 정보는 레퍼런스를 참고합니다.

startX, startY, startAngle 파라미터를 사용해 경로 검색 시 참고할 출발 지점을 지정할 수 있습니다. 그러나 길 안내 시에는 사용자의 현재 위치로부터 목적지까지의 안내만을 제공하며, 별도의 출발 지점을 지정할 수는 없습니다.

예제

// 카카오내비 앱으로 길 안내
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
    // 카카오내비 앱으로 길 안내 - WGS84
    startActivity(
        NaviClient.instance.navigateIntent(
            Location("카카오 판교오피스", "127.108640", "37.402111"),
            NaviOption(coordType = CoordType.WGS84)
        )
    )
} else {
    // 카카오내비 설치 페이지로 이동
    startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse(Constants.WEB_NAVI_INSTALL)
        ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
    )
}
길 안내 예시 화면

추가 기능

경유지

경유지 목록 설정이 가능합니다. 각 경유지 정보를 Location 객체에 담고, 요청 시 viaList 파라미터로 경유지 Location의 리스트(List)를 전달합니다.

if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
    // 카카오내비 앱으로 길 안내 - WGS84 - 경유지 추가
    startActivity(
        NaviClient.instance.navigateIntent(
            Location("카카오 판교오피스", "127.108640", "37.402111"),
            NaviOption(coordType = CoordType.WGS84),
            // 경유지 목록 설정
            listOf(
                Location("판교역 1번출구", "127.111492", "37.395225")
            )
        )
    )
} else {
    // 카카오내비 설치 페이지로 이동
    startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse(Constants.WEB_NAVI_INSTALL)
        ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
    )
}

목적지 공유하기

기본 정보
레퍼런스 앱 설정
[SDK] shareDestinationIntent()
[SDK] Location
[SDK] NaviOption
설치
초기화
권한 사전 설정 카카오 로그인 동의항목
- 플랫폼 등록 - -

카카오내비를 실행하여 지정한 목적지 정보를 공유합니다.

요청

NaviClientshareDestinationIntent()를 호출해 Intent를 반환 받아 실행하도록 구현합니다.

shareDestinationIntent() 호출 시 목적지 정보를 담은 Location, 검색 조건을 담은 NaviOption 객체를 전달해야 합니다. NaviOption에는 원하는 검색 조건만 지정하여 요청할 수 있습니다. 자세한 정보는 레퍼런스를 참고합니다.

startX, startY, startAngle 파라미터를 사용해 경로 검색 시 참고할 출발 지점을 지정할 수 있습니다. 그러나 길 안내 시에는 사용자의 현재 위치로부터 목적지까지의 안내만을 제공하며, 별도의 출발 지점을 지정할 수는 없습니다.

예제

if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
    // 카카오내비 앱으로 목적지 공유하기 - WGS84
    startActivity(
        NaviClient.instance.shareDestinationIntent(
            Location("카카오 판교오피스", "127.108640", "37.402111"),
            NaviOption(coordType = CoordType.WGS84)
        )
    )
} else {
    // 카카오내비 설치 페이지로 이동
    startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse(Constants.WEB_NAVI_INSTALL)
        ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
    )
}
목적지 공유 예시 화면

추가 기능

경유지

경유지 목록 설정이 가능합니다. 각 경유지 정보를 Location 객체에 담고, 요청 시 viaList 파라미터로 경유지 Location의 리스트(List)를 전달합니다.

// 카카오내비 앱으로 목적지 공유하기 - 경유지 추가
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
    // 카카오내비 앱으로 목적지 공유하기 - WGS84
    startActivity(
        NaviClient.instance.shareDestinationIntent(
            Location("카카오 판교오피스", "127.108640", "37.402111"),
            NaviOption(coordType = CoordType.WGS84),
            // 경유지 목록 설정
            listOf(
                Location("판교역 1번출구", "127.111492", "37.395225")
            )
        )
    )
} else {
    // 카카오내비 설치 페이지로 이동
    startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse(Constants.WEB_NAVI_INSTALL)
        ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
    )
}