SMALL
카톡로그인 인텐트를 아래와 같이 처리해줬다.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("intent:")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage());
if (existPackage!=null) {
startActivity(intent);
} else {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=" + intent.getPackage()));
}
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
else {
view.loadUrl(url);
}
return true;
}
실사용에서는 참 편하지만 테스트할 때 만큼은 정말 불편하다.
특히 여러대의 테스트기기로 로그인을 해야하는데..
현재 개발중인 서비스는 카톡로그인 외의 로그인방법이 존재하지 않는다.
방법이 없을까 고민하다가 Extra를 자세히 보니 브라우저에서 로드되는 URL이 있어서 아래와 같이 처리해줬다.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("MainIntent URL", url);
if (url.startsWith("intent:")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage());
if (existPackage!=null) {
startActivity(intent);
} else {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=" + intent.getPackage()));
}
return true;
} catch (Exception e) {
try{
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
if(intent.getAction().contains("kakao")){
view.loadUrl(intent.getStringExtra("browser_fallback_url"));
}
else {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=" + intent.getPackage()));
}
}
catch (Exception ex){
ex.printStackTrace();
}
}
}
else {
view.loadUrl(url);
}
return true;
}
이제 카톡이 깔려있지 않아도 카카오 계정으로 사용이 가능하다.
BIG
'Mobile App > Android' 카테고리의 다른 글
[Gradle] 안드로이드 빌드 버전 자동으로 관리하기 (1) | 2021.12.14 |
---|---|
Cross-App Scripting Reject 해결방법 (4) | 2021.09.12 |
안드로이드 웹뷰 뒤로가기 버튼 이벤트 만들기 (1) | 2021.05.12 |
안드로이드 웹뷰 사용 및 설정, SSL 무시 (0) | 2021.05.12 |
안드로이드 하단 메뉴바 활용하기 (0) | 2021.05.02 |