반응형

Webview 9

[Android] How to debug web views in Chrome

1. 단말기를 PC에 연결 2. Chrome://inspect 접속 3. 브라우저 연결 1. 단말기를 PC에 연결 가지고 있는 안드로이드 폰을 PC에 연결합니다. 2. Chrome://inspect 접속 크롬 주소창에 "Chrome://inspect"를 검색합니다. 현재는 연결된 Device가 없는 상태이고, 만약 USB를 통하여 연결을 하면 아래와 같이 연결된 Device가 표시됩니다. 이때 USB는 반드시 데이터 파일 전송모드(디버깅 모드)가 되어야 합니다. 3. 브라우저 연결 Android폰에서 Chrome을 열면 현재 내 Chrome에서 띄어진 창들 개수만큼 목록이 뜨게 됩니다. 이 중에서 내가 연결하고자 하는 탭의 "inspect"를 클릭하면 아래와 같이 안드로이드 화면이 Chrome의 DevT..

[Android] Webview에서 location.replace 사용하는법

웹뷰에서 (모두가 그런지는 모르겠지만) location.replace가 정상적으로 작동하지 않는 이슈가 발생하였습니다. 여기서 잠깐, location.replace란 무엇일까요??? 보통 anchor태그 (흔히 태그)에서 클릭 시 페이지는 location.href = '이동 주소' 형태로, history에 쌓이는 형태로 이동합니다. B 페이지로 이동 만약 다음과 같은 링크가 있다면 해당 링크 클릭 시 A.html 페이지에서 B.html 페이지로 이동합니다. 그리고, 페이지 history (흔히 우리가 브라우저에서 사용하는 앞으로가기/뒤로가기 버튼)에 A.html과 B.html이 쌓이게 됩니다. history (링크 클릭 전) - A.html (현재페이지) 0 A.html history (링크 클릭 후) ..

[Android] net::ERR_CACHE_MISS에 대한 해결방법

POST방식의 submit을 전송한 후에 뒤로 가기를 하다 보면 WebView에서 다음과 같은 오류가 발생하기도 합니다. 이는 캐시의 기간이 만료돼 캐시를 사용할 수 없을 경우로 보통 주문페이지 등에서 뒤로 가기로 재 접속을 막기 위해 사용되는 경우가 많습니다. 때문에 사용 용도에 따라 다음과 같이 작업을 하면 ERR_CACHE_MISS가 WEB_VIEW 상에서는 해결이 되지만, 이보다 프로세스상으로 그게 옳은지에 대해서 한번 판단을 해볼 필요는 있습니다. mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // net::ERR_CACHE_MISS에 대한 해결방법 만약 PHP상에서 해당 오류를 수정하려 한다면 어플 side가..

[Android] Webview 콘솔정보를 LogCat에 띄우기

이전 게시글에 이어 콘솔정보를 LogCat에 띄우는 방법에 대해 글을 작성해볼까 합니다. Script 개발을 하다보면 각 브라우저의 Console에서 오류등을 확인하는 경우가 많습니다. 하지만, 웹뷰에 들어간 경우부터는 확인이 되지 않는 경우가 많은데 이때, console.log의 정보를 LogCat에서 띄어주면 좀더 수월하게 작업이 가능합니다. (안드로이드와 웹개발을 동시에 하는 입장에서) 방법은 매우 간단한데, 이전 게시글에서 커스터마이즈 했던 WebChromeClient에 다음과 같은 메서드를 추가해주면 로그캣에서도 확인이 가능하게 됩니다. 2020/09/03 - [개발 창고/안드로이드 개발] - [Android] Webview에서 경고창(Alert/Confirm) 커스터마이즈하기 [Android]..

[Android] Webview에서 경고창(Alert/Confirm) 커스터마이즈하기

웹뷰에서의 환경을 작성하다 보면 alert나 confirm에 대해 하나의 희망사항이 생길 겁니다. 아래와 같이 경고창에 타이틀이 주소 기반으로 보이는 예입니다. 이런 경우 보통 어플을 완성해도 완성도가 낮아 보이는 요소로 작용하기 마련인데 WebChromeClient에 다음과 같이 생성을 해주면 위의 문제에 대한 해결이 깔끔하게 완료될 수 있습니다. CustomChrome /** * @author royzero * @since 2020-09-03 */ public class CustomChrome extends WebChromeClient { private Context mContext; // WebChromeClient를 호출한 Context private AlertDialog mAlertDialog;..

[Android] WebView에서 Url 캐치하기

자주 사용되는 기능은 아니지만, 이전 주소로 가는것을 막거나 돌아가는 경우 처리를 해주어야 할 부분이 있는 경우 한번씩 쓰게 되는 기능입니다. 보통 Javascript에서는 history를 통해 처리 되는 부분이지만 다음과 같이 android의 webview에서는 다음과 같이 처리가 가능합니다. // Step01. 현재 WebView의 방문 한(이전/이후) 주소들을 목록으로 가져옵니다. WebBackForwardList webBackForwardList = mWebView.copyBackForwardList(); // Step02. 가져온 목록 중 이전 위치(현재 위치-1)에 있는 Index를 가져옵니다. int prevIndex = webBackForwardList.getCurrentIndex() - ..

[Android] WebView에 Header추가하기

안드로이드 웹뷰 프로그램을 개발하다 보면 Header에 정보를 담아 보내면 편리한 경우가 있습니다. 저 같은 경우엔, 디바이스의 정보(예, fcm token, uuid 등)을 담아 보내서 기기의 접근을 분석할 때 활용하기도 합니다. 해당 소스는 Android API level 8(Android 2.2.2x, FROYO)부터 활용가능합니다. 버전에 대한 정보는 하단의 페이지에서 확인 가능합니다. https://developer.android.com/guide/topics/manifest/uses-sdk-element?hl=ko#ApiLevels | Android 개발자 | Android Developers Lets you express an application's compatibility with one..

[Android] 화면 회전 리로딩 막기

WebView 개발을 하다보면, 가로/세로 화면모드로 전환시 WebView가 리로드되는 현상이 발생합니다. 이는 화면 전환에 따른 onCreate의 재호출 되기 때문입니다. 이런 경우 회전시 리로드를 막는 방법은 매우 간답하니다. AndroidManifast.xml ... 해당 파일에서 내에 android:configChanges="orientation|keyboardHidden|screenSize" 해당 라인을 추가하면 화면모드 전환시에도 웹뷰등이 리로드 되는것을 막을 수 있습니다.

[Android] 안드로이드 기능을 웹에서, AndroidBridge

Android 개발 시, 기존 모바일웹을 어플로 띄우고 싶을 때가 있을 겁니다. 그럴 때 사용하는 게 바로 WebView인데 가끔 Web에서 안드로이드의 기능 (ex. 카메라, 바코드스캐너, 알림 등등)을 사용하고 싶을 때가 있을 겁니다. 물론 최근의 WebView는 그런 걸 많이 커버하려고도 하지만, 커스터마이즈한 기능들까지 다 커버하지는 못하죠. 그럴 때, 개발자의 갈증을 2프로 정도 해소해줄 수 있는 기능이 바로 AndroidBridge입니다. 이는 AndroidBridge라고 따로 있는 건 아니고 기능상으로 그러하다는 거고 webview를 통해 web과 android가 통신할 수 있도록 다리를 놓아주는 기능이기 때문에 AndroidBridge라고 보시면 됩니다. 1. Bridge 만들기 impor..

반응형