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);

}

      });

 }