처음 개발할때는 정상적으로 자바스크립트로 카카오톡 링크가 됬었는데 몇일전부터
intent:kakaolinke://send 하면서 웹페이지를 표시할수 없다고 뜨네요
G-pro2,
4.4
개발자 사이트의 링크 데모들이 모두 같은 현상입니다.
webView에서 자바스크립트 호출을 하였습니다.
처음 개발할때는 정상적으로 자바스크립트로 카카오톡 링크가 됬었는데 몇일전부터
intent:kakaolinke://send 하면서 웹페이지를 표시할수 없다고 뜨네요
G-pro2,
4.4
개발자 사이트의 링크 데모들이 모두 같은 현상입니다.
webView에서 자바스크립트 호출을 하였습니다.
private void loadkakao(String url) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.putExtra(Browser.EXTRA_APPLICATION_ID,getPackageName());
startActivity(intent);
} catch (ActivityNotFoundException e) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + "com.kakao.talk"));
startActivity(intent);
Log.d(TAG, "카카오톡이 설치되어있지 않음 : " + e.toString());
} catch (Exception e) {
Log.d(TAG, "기타에러 : " + e.toString());
}
}
자꾸 카카오톡이 설치가 안되어있다고 그러네요 ㅜㅜ
안녕하세요, 갤럭시s3 에서 에러가 나고 있습니다 글과는 오류 상황이 약간 다른 것 같아 새로운 토픽으로 이동하였습니다.
안드로이드 4.4 SDK부터 웹뷰가 Chromium기반으로 변경되면서, User-Agent에는 Chrome이 포함되지만 Intent를 지원하지 않아서 발생하는 문제입니다.
아래와 같이 직접 Intent를 핸들링 하실 수는 있습니다.
(웹뷰의 경우 커스톰하게 변경할 수 있는 요소들이 있어서 공식 지원 대상에 포함되지는 않음을 알려드립니다.)
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 {
getContext().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);
getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(GOOGLE_PLAY_STORE_PREFIX + packageName)));
}
return true;
}
} else {
return false;
}
}
}
저도 해결이 되었어요 감사합니다~
이 코드를 적용해서 확인해보았는요.
카카오 앱이 깔려있으면 정상동작하는데, 앱이 없으면 마켓 설치로 이동해야되잖아요?
그런데 이동을 안하네요…
확인해보니까 final String packageName = url.substring(packageStartIndex, packageEndIndex < 0 ? url.length() : packageEndIndex); 여기 packageName에 package=com.kakao.talk 이 들어가있네요 ㅎㅎ
저처럼 삽질하지마시고 안되시는분들은 package= 는 빼고 적용하시길~
지원 여부를 떠나 intent:kakaolink:// 라는 형식 자체에 대한 고민이 필요하지 않을까 싶습니다.
형식이 지금
intent://join?l=sy6qczo&r=ew%3ahttp%3a%2f%2fxn--ou6bo7j.net%2f#intent;scheme=kakaoopen;package=com.kakao.talk;end
게 바뀌는 바람에 또 글짜조합했네요…