html 페이지
자바스크립트 부분
Kakao.init('xxxxxxxxxxxxxxxxxx');
// 카카오톡 링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다.
Kakao.Link.createTalkLinkButton({
container: '#kakao-link-btn',
label: '스타와 디자이너의 썸&쌈 콜라보레이션 패션왕 코리아에 초대 합니다. ',
image: {
src: 'http://xxx.xxx.xxx/xxx.png',
width: '100',
height: '100'
},
webButton: {
text: 'Blarblar,
url: 'https://play.google.com/store/apps/details?id=com.xxx.xxx' // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다.
}
});
그리고 웹뷰의 MainActivity에서 는
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;
}
}
//return super.shouldOverrideUrlLoading(view, url); //To change body of overridden methods use File | Settings | File Templates.
}
}
아래 부분을 추가 했습니다.
getContext() → getBaseContext() 만 변경 했구요…
html 에서 웹버튼을 클릭 하면 market://details?id=com.kakao.talk@referer={22appkey%22 이면서 웹페이지를 표시 할 수 없다고 나옵니다.