프로그래밍/ 안드로이드어플만들기
안드로이드 어플 오류 수정 : Err_unknown_url_scheme
kugancity
2023. 9. 3. 16:27
반응형
운영하던 어플에 새로 제휴가 들어오면서 이벤트 배너를 클릭하면 외부 링크로 이동하도록 수정하였는데,
외부 링크에서 공인인증서나 네이버 로그인 같은 인증 사이트로 이동시
아래와 같이 Err_unknown_url_scheme 에러가 발생하였다.
기존 코드
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
새로운 웹뷰를 띄워서 해결하는 방식도 있다고 하던데,
인증 방법이 워낙 다양해서 이렇게 해도 Err_unknown_url_scheme 에러가 발생하는 페이지가 있었다.
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http://") || url.startsWith("https://")) {
view.loadUrl(url);
return false;
}
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
} catch (Exception e) {
Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e);
return true;
}
}
결국 예전에 테스트해두고 사용 안 한 커스텀탭을 사용하기로 하고
제휴 페이지의 링크일 경우 커스텀탭으로 url을 열기로 했다.
커스텀 탭은 모바일 웹페이지와 동일하기 때문에 따로 처리를 안 해줘도 된다.
import android.app.PendingIntent;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if( url.contains("meritz")) {
openCustomTabs(url);
}
else{
view.loadUrl(url);
}
return false;
}
public void openCustomTabs( String url) {
Intent intent = new Intent(Intent.ACTION_SEND);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 1, intent, PendingIntent.FLAG_IMMUTABLE);
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(customTabsSession);
builder.setShowTitle(true);
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));
}
새로운 창으로 이동하면서 이제 문제없이 제휴 페이지에서 가입이 가능하다.
이제 테스프 폰에서 테스트하면서 어플 릴리즈 준비하자.
728x90
반응형