loose
이로운 개발하기
loose
전체 방문자
오늘
어제
  • 전체 (204)
    • ☕ Java (24)
    • 📘 Effective Java (9)
    • 🍃 Spring (48)
    • 📖 ORM (9)
    • ☸️ Kubernetes (13)
    • 🐧 Linux (5)
    • 🐋 Docker (5)
    • 🛠️ CI & CD (7)
    • 🕸️ Web (6)
    • 🔗 Distributed System (3)
    • 📜 Js (10)
    • 📈 Database (11)
    • 🗂️ Etc (34)
    • 🧑 Chitchat (10)
    • 📒 문학 (10)
    • 👜 개인 공부 창고 (0)

공지사항

반응형

최근 글

최근 댓글

loose
🗂️ Etc

안드로이드 웹뷰 카카오 공유하기 기능 멈춤 현상

🗂️ Etc

안드로이드 웹뷰 카카오 공유하기 기능 멈춤 현상

2023. 1. 8. 02:46
반응형

PC나 모바일 웹 환경에서는 카카오 공유하기가 정상적으로 작동하지만

웹뷰로 카카오 공유하기 기능을 이용할 때 작동을 하지 않는다.

 

공식 카카오 Q&A에 올라온 코드도 정상적으로 작동하지 않아서 이곳저곳 긁어서 커스터마이징했다.

올바른 구현은 아닐 수 있지만 개인적으로 정상 작동해서 쓰는 중이다.

 

언어는 Kotlin이며 webViewClient에 shouldOverrideUrlLoading를 오버라이딩해서 구현한다.

MainActivity.kt

val myWebView: WebView = findViewById(R.id.webView)

        myWebView.settings.run {
            // 웹뷰 자바스크립트 허용
            javaScriptEnabled = true
            javaScriptCanOpenWindowsAutomatically = true
            setSupportMultipleWindows(true)
        }
        myWebView.webViewClient = object: WebViewClient() {

            override fun shouldOverrideUrlLoading(view: WebView,request: WebResourceRequest): Boolean {
                Log.d(TAG, request.url.toString())

                if (request.url.scheme == "intent") {
                    try {
                        // Intent 생성
                        val intent = Intent.parseUri(request.url.toString(), Intent.URI_INTENT_SCHEME)

                        // 카카오톡이 깔려 있으면 그대로 코드 실행, 깔려 있지 않으면 예외 발생
                        packageManager.getPackageInfo("com.kakao.talk", PackageManager.GET_ACTIVITIES)

                        startActivity(intent)
						return true
                    } catch (e: URISyntaxException) {
                        Log.e(TAG, "Invalid intent request", e)
                    } catch (e: Exception) {
                        // 실행 못하면 웹뷰는 에러가 발생하므로 
                        // 본인이 원하는 사이트로 이동(보통 메인으로 redirect)
                        myWebView.loadUrl("https://stir.tistory.com")

                        // 플레이 스토어 - 카카오톡으로 이동
                        val intentStore = Intent(Intent.ACTION_VIEW)
                        intentStore.addCategory(Intent.CATEGORY_DEFAULT)
                        intentStore.data = Uri.parse("market://details?id=com.kakao.talk")
                        startActivity(intentStore)
                    }
                }

                return false
            }
        }

 

AndroidManifest.xml

아래 queries 부분을 추가해준다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <queries>
        <package android:name="com.kakao.talk" />
    </queries>
728x90

'🗂️ Etc' 카테고리의 다른 글

NAVER DEVIEW DAY 2 - 런타임 데드 코드 분석 도구 Scavenger  (0) 2023.03.03
ChatGPT로 공룡 그려 달라고 하기  (0) 2023.01.10
웹 개발자를 위한 안드로이드 웹뷰 만들기  (3) 2023.01.05
이모지(Emoji) 단축키 및 MySQL과 Javascript에서 사용하기  (0) 2022.12.17
Hosts 파일 경로, 형식, 원리  (0) 2022.12.14
  • MainActivity.kt
  • AndroidManifest.xml
'🗂️ Etc' 카테고리의 다른 글
  • NAVER DEVIEW DAY 2 - 런타임 데드 코드 분석 도구 Scavenger
  • ChatGPT로 공룡 그려 달라고 하기
  • 웹 개발자를 위한 안드로이드 웹뷰 만들기
  • 이모지(Emoji) 단축키 및 MySQL과 Javascript에서 사용하기
loose
loose
불만하는 사람은 90명, 해결하는 사람은 9명, 리드하는 사람은 1명
음악과 낭만을 좋아합니다.
이로운 개발하기불만하는 사람은 90명, 해결하는 사람은 9명, 리드하는 사람은 1명 음악과 낭만을 좋아합니다.
hELLO. 티스토리 스킨을 소개합니다.
제일 위로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.