출처: http://ttorr.blogspot.kr/2014/03/kitkat44-loadurl.html
이전 버젼까지 loadUrl 함수를 이용해서 새 페이지로 이동하고 javascript:function_name()과 같은 꼼수를 사용할 수 있었는데
이 KiKat 버젼부터 보안이 강화되면서 불가능해졌다.
이것을 극복하기 위한 방안으로는 evaluateJavascript함수를 이용하는 것인데 무작정 이용하면 또 안된다.
원인은 UI쓰레드 보호문제 인듯.
그래서 대강 아래와 같은 코드구조로 javascript 함수를 호출해야 한다.
loadUrl을 이용한 새 페이지로의 이동또한 별도의 javascript 함수를 html페이지 내에 정의하여 대체하는 것이 좋겠다.
if (Build.VERSION.SDK_INT < 19 ) { // 이전 버전의 경우. webView.loadUrl( "javascript:~~~~~" ); } else { // KitKat 이상. temp_fn = "~~~~~"; // UiThread 에서 돌아가야하므로 아래 코드가 중요하다. runOnUiThread(new Runnable() { @Override public void run() { ValueCallback<String> resultCallback = null; webView.evaluateJavascript(temp_fn,resultCallback); } }); } |
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] Android AsyncTaskLoader에 대하여 (0) | 2014.11.05 |
---|---|
[펌_안드로이드] LoaderManager 동작 이해 (0) | 2014.11.05 |
[펌_Android] Intent 로 받은 목록을 커스텀하기! (0) | 2014.11.03 |
[안드로이드] 안드로이드 애니메이션 효과 및 기능 (0) | 2014.11.03 |
[펌] Storage Access Framework을 통한 이미지 가져오기 (0) | 2014.11.01 |