IT_Programming/Android_Java
안드로이드 KitKat(4.4) 버젼에서 웹뷰를 통한 자바스크립트 함수 실행 혹은 loadUrl시 동작하지 않는 문제 해결
JJun ™
2014. 11. 4. 10:57
출처: 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); } }); } |