마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹뷰 카카오링크 공유 - 도와주세요 형님덜 ㄷㄷㄷ

0 추천

 

  • 아래와 같이 코딩 했는데, 카톡 공유하면 여전히 intent:kakaolink: 이렇게 에러가 납니다ㅠ 도와주세요 형님덜~ ㅠㅠ

1

웹뷰 구현 중인데, 카카오링크 공유하기가 계속 에러가 나고 안되네요;;

  1. gradle (Project)

allprojects {
repositories {
google()
jcenter()

    // 카카오 SDK 레포지토리 설정
    maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}

}
2. gradle (Module)

//자바 버전 설정
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {

생략
// 카카오 SDK  모듈 설정
implementation "com.kakao.sdk:v2-user:2.4.2" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:2.4.2" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-story:2.4.2" // 카카오스토리
implementation "com.kakao.sdk:v2-link:2.4.2" // 메시지(카카오링크)
implementation "com.kakao.sdk:v2-navi:2.4.2" // 카카오내비

}
3. Manifest

<application 생략

<!-- "kakao{YOUR_NATIVE_APP_KEY}://kakaolink" 형식의 앱 실행 스킴을 설정하는데 사용 -->
<data android:host="kakaolink"
    android:scheme="kakao{29947cfd9a52f18de668f1b2a3bf0867}" />
</application>
  1. MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Kakao SDK 초기화
KakaoSdk.init(this, "{29947cfd9a52f18de668f1b2a3bf0867}");

private class myWebViewClient extends WebViewClient {
public static final String INTENT_PROTOCOL_START = “intent:”;
public static final String INTENT_PROTOCOL_INTENT = “#Intent;”;
public static final String INTENT_PROTOCOL_END = “;end;”;
public static final String GOOGLE_PLAY_STORE_PREFIX = “market://details?id=”;

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith(INTENT_PROTOCOL_START)) {
        final int customUrlStartIndex = INTENT_PROTOCOL_START.length();
        final int customUrlEndIndex = url.indexOf(INTENT_PROTOCOL_INTENT);
        if (customUrlEndIndex < 0) {
            return false;
        } else {
            final String customUrl = url.substring(customUrlStartIndex, customUrlEndIndex);
            try {
                getBaseContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(customUrl)));
            } catch (ActivityNotFoundException e) {
                final int packageStartIndex = customUrlEndIndex + INTENT_PROTOCOL_INTENT.length();
                final int packageEndIndex = url.indexOf(INTENT_PROTOCOL_END);

                final String packageName = url.substring(packageStartIndex, packageEndIndex < 0 ? url.length() : packageEndIndex);
                getBaseContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(GOOGLE_PLAY_STORE_PREFIX + packageName)));
            }
            return true;
        }
    } else {
        return false;
    }
}

}

홍구홍구 (140 포인트) 님이 3월 31일 질문
홍구홍구님이 4월 1일 수정
Unknown URL Scheme이네요. 에러 메세지로만 본다면 넘기신 scheme이 잘못된 것 같네요. 카카오톡에서 정확한 포맷의 scheme인지 확인해 보셔야 할 것 같은데요.
아 넵 감사합니다~ 그거는 혹시 네이티브앱 키를 안 넣어서 그런 걸까요? 일단 비워두긴 했었는데, 그런데 그게 아녀도 계속 안되긴 하네요ㅠ

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...