IOS의 경우 웹에서 링크 클릭시 target=_blank 사용해도 onCreateWindow 호출되지 않지만
안드로이드의 경우 target=_blank 및 WindowOpen 둘다 onCreateWindow가 호출됨. (IOS는 WindowOpen에만 호출됨)
웹에서 링크 클릭시 외부 브라우저로 보내길 원함. 외부 브라우저로 열리길 원할 경우 별도의 인터페이스를 이용해서 외부 브라우저 열리게 해야됨.
WebView의 onCreateWindow 호출 조건은 새창을 열어서 Deeps가 하나더 생성해서 보여주는 기능인데 하이브리드앱 개발시 웹에서 아무데나 target=_blank나 WindowOpen을 사용할 경우 앱개발자들이 머리가 아파질 수 있음
다른거 다 제쳐두고 그래도 외부 브라우저로 보내달라고 한다면 꼼수는 있음.
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
// 사용자가 웹뷰에서 클릭한 정보를 획득
WebView.HitTestResult result = view.getHitTestResult();
// url 획득
String targetUrl = result.getExtra();
// 외부브라우저 오픈
Utils.externalOpen(getContext(), targetUrl);
return false;
}
이렇게 하면 되긴함. 하지만 PG사 같은 결제사 붙일 경우 이런 코드가 있으면 망함. PG사 연동시 PG사의 결제창을 새창으로 보여줘야 되는 경우가 있는데 이렇게 하면 안되겠죠?????
'Android(Java)' 카테고리의 다른 글
[Java] Permission 설정 및 거부시 처리 (0) | 2024.04.22 |
---|---|
[Java] 갤러리 이미지 추출하기 (0) | 2024.04.15 |
[Java] Log 가독성있게 찍기 (0) | 2024.04.08 |
[Java] ConstraintLayout LinearLayout Height 자동크기변경 (0) | 2024.04.05 |
[Java] AES(128,192,256)::iv 암복호화 (0) | 2024.03.29 |