Android 4.0.1에서 WebView HTML5 로컬 저장소 문제 해결하기
Android 4.0.1(아이스크림 샌드위치) 환경에서 WebView를 사용할 때 HTML5 로컬 저장소(Local Storage)가 정상적으로 동작하지 않는 경우가 있습니다. 이는 구버전 Android의 WebView가 파일 스킴(file scheme) 기반의 디렉터리 경로를 올바르게 처리하지 못하기 때문입니다. 다행히 몇 가지 간단한 방법으로 이 문제를 해결할 수 있습니다.
1. 디렉터리 경로 대신 파일명까지 지정하기
Android 4.4 미만 버전에서는 파일 스킴을 디렉터리 형태로 지정해 데이터를 로드하면 동작하지 않습니다. 예를 들어 아래 코드처럼 경로 끝이 폴더로 끝나면 문제가 발생합니다.
browser.loadDataWithBaseUrl("file:///android_asset/", html, "text/html", "UTF-8", null);이때 경로 끝에 실제 파일명을 추가하면 구버전 Android에서도 정상적으로 작동합니다.
browser.loadDataWithBaseUrl("file:///android_asset/new.html", htmlContent, "text/html", "UTF-8", null);2. HTTP URL을 기준으로 사용하는 경우
콘텐츠를 웹 서버 기준으로 로드해야 한다면, 기준 URL(base URL)을 https://www.demo.com과 같은 웹 주소로 지정할 수도 있습니다.
browser.loadDataWithBaseURL("https://www.demo.com", htmlContent, "text/html", "utf-8", null);추가 팁: DOM 저장소 활성화
HTML5 로컬 저장소를 사용하려면 WebView 설정에서 DOM 저장소를 반드시 활성화해야 합니다. 아래 설정을 함께 적용하면 안정성이 높아집니다.
WebSettings settings = browser.getSettings();
settings.setDomStorageEnabled(true);
위 방법들을 적용하면 Android 4.0.1을 포함한 구버전 기기에서도 WebView의 HTML5 로컬 저장소 기능을 문제없이 사용할 수 있습니다.