안규 공부방

Android > Webview - JavaScriptMethods() - 웹뷰와 자바스크립트

등록일 : 2017-07-06 17:45 조회수 : 93,979

먼저 WebView의 만드는 방법을 알아 봤다.

웹뷰의 설정정보는 WebSettings 객체에 포함되어 있는데, 이 셋팅 정보가 여러가지가 있는데요.

이 중에서 자바스크립트를 허용하기 위해서는 setJavaScriptEnabled() 모서드를 이용하는데, setJavaScriptEnabled(true) 로 설정해야 합니다.

스크립트 허용 여부는 디폴트가 'false'로 되어 있으므로 자바스크립트를 사용해야 할 필요가 있을 때는 이 코드를 추가해야 합니다.
 
	private WebView webView;
	private Handler mHandler = new Handler();

	public void Connect_URL(String conn_url)
	{ 
		String conn_url = "http://abc.co.kr";

		webView = (WebView) findViewById(R.id.webview1);             

		WebSettings webSettings = webView.getSettings(); 
		webSettings.setSavePassword(false); 
		webSettings.setSaveFormData(false); 
		webSettings.setJavaScriptEnabled(true); 
		webSettings.setSupportZoom(false);      
		webView.setWebChromeClient(new WebBrowserClient());
		webView.setWebViewClient(new InfoWebViewClient());            

		webView.addJavascriptInterface(new JavaScriptMethods(), "sample");     

		webView.loadUrl(conn_url);
	}

  
	final class JavaScriptMethods {  
		JavaScriptMethods() { }  
        
		//웹페이지의 자바스크립트는 여기에서 처리한다.
		public void fnc_test()
		{   
			Toast.makeText(getApplicationContext(),"This Function fnc_test()",500).show();
		}

		//애플리케이션에서 웹페이지의 자바스크립트를 호출하는 예제
		public void clickToPage()
		{
			mHandler.post(new Runnable() {
				public void run() {
					webView.loadUrl("javascript:changeFace()");
				}
			});
		}      
    } 
	


위의 소스에서 웹페이지의 addJavascriptInterface() 메서드를 통해 웹페이지의 자바스크립트 인터페이스 함수를 설정할 수 있는데,

JavaScriptMethods 클레스에서 받아서 처리 할 수 있습니다.

"sample" 은 객체이름이 됩니다.

즉 웹페이지에서 자바의 fnc_test() 함수를 호출하고자 할때는 window.sample.fnc_test() 처럼 사용 할 수 있습니다.


애플리케이션에서 웹페이지의 자바스크립트를 호출하는 예제는 clickToPage() 함수 입니다.

여기에서는 자바스크립트를 이용해 접근할 때 안드로이드에서 정의된 핸들러를 사용해야 하며, Runnable 객체를 만들고

post() 메서드를 이용합니다.


 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.