마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

a태그 target="_blank" 일때만 외부브라우저로 열리게 하는방법이 있을까요?

0 추천

앱개발을 막접해본 초보자입니다.

현재 웹앱을 개발중이며, a태그 blank시에만 외부브라우저로 연결되도록하고싶은데

구글링을 해서 찾아본방법으로 적용을 해보아도 잘안되더라구요 ㅠㅠ 

현재 문제점

_blank시 외부브라우저로 열리긴하나 location.reload()시에도 외부브라우저로 열리는것이 문제

질문사항

1. 타겟이 _blank일때만 외부브라우저로 열리게는 불가능한지?

2. 웹내부 id값이나 class값을 가져다가 조건을 걸수있는지가 궁금합니다.

 

아래는 현재 시도해본 코드들입니다.

webSettings = webView.getSettings(); //세부 세팅 등록
webSettings.setJavaScriptEnabled(true); // 웹페이지 자바스크립트 허용 여부
webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg)
    {
        WebView.HitTestResult result = view.getHitTestResult();
        String data = result.getExtra();
        Context context = view.getContext();
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
        context.startActivity(browserIntent);
        return false;
    }

}); // 클릭시 새창 안뜨게
webSettings.setSupportMultipleWindows(true); // 새창 띄우기 허용 여부
webSettings.setJavaScriptCanOpenWindowsAutomatically(false); // 자바스크립트 새창 띄우기(멀티뷰) 허용 여부
webSettings.setLoadWithOverviewMode(true); // 메타태그 허용 여부
webSettings.setUseWideViewPort(true); // 화면 사이즈 맞추기 허용 여부
webView.getSettings().setDefaultTextEncodingName("UTF-8"); // encoding 설정
webSettings.setSupportZoom(false); // 화면 줌 허용 여부
webSettings.setBuiltInZoomControls(false); // 화면 확대 축소 허용 여부
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 컨텐츠 사이즈 맞추기
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 브라우저 캐시 허용 여부
webSettings.setDomStorageEnabled(true); // 로컬저장소 허용 여부
webView.loadUrl(Url); // 웹뷰에 표시할 웹사이트 주소, 웹뷰 시작
정후이11 (270 포인트) 님이 2022년 3월 16일 질문

1개의 답변

0 추천
 
채택된 답변

아래 블로그를 참고해 보시죠.

http://therockncoder.blogspot.com/2014/04/understanding-androids-webchromeclient.html

위의 블로그에 이런 내용이 나오네요.

onCreateWindow is triggered whenever the user taps on an <a> tag with the target attribute is set to "_blank". In a browser this would cause the destination link to open in a new window or tab, but since we are in a webview, there is no way to do this without the help of the parent application, hence the called to onCreateWindow and its behavior of launching the browser if the call fails. 

spark (224,800 포인트) 님이 2022년 3월 16일 답변
정후이11님이 2022년 3월 16일 채택됨
네 감사합니다! 한번시도해보겠습니다.
...