티스토리 뷰

안드로이드에서는 웹페이지를 표시 해주는 방법중에 가장 많이 사용 하는 것이 바로 웹뷰(WebView) 일것입니다.
가장 간단하게 구현할 수 있는것이 이유가 아닐까 합니다. 그런데, 이러한 웹페이지와 안드로이드간의 서로 연동을 해야 하는 경우가 있습니다.

웹에서 특정 버튼이나 액션이 이루어졌을때 안드로이드에서 해당 이벤트를 받아 화면을 이동하는등의 액션을 취하는 경우를 들수 있겠습니다.
이번 시간에서는 자바스크립트를 통해 웹페이지와 안드로이드 간의 연동을 하는 방법을 알아 보도록 하겠습니다.


로직
웹뷰를 불러온 웹페이지의 버튼을 누르면 웹페이지에서는 자바스크립트를 호출하고 안드로이드 단말기에서는 이 자바스크립트를 미리 정의한 후에 자바스크립트가 호출 되면 특정 페이지로 이동하는 로직 입니다.


1. WebviewActivity.class


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 private WebView mWebView;
  @Override
   protected void onCreate(Bundle savedInstanceState) {
 mWebView = (WebView) findViewById(R.id.test_webview);
 //기타 웹뷰 코드
        //
 //자바스크립트 처리할 인터페이스 등록
 //"자바스크립트 구분 값" : 자바스크립트 실행을 위한 인터페이스 이름, 차후 이 이름으로 자바스크립트를 호출 하므로 반드시 기억하고 있어야 합니다.
 mWebView.addJavascriptInterface(new WebviewMessageSend(this), "자바스크립트 구분 값");
   }
2. WebviewMessageSend.class
public class WebviewMessageSend {
 
 private Context  mContext;
 
 public WebviewMessageSend(Context mContext){
  this.mContext = mContext;
 }
        /**
 * 자바 스크립트 인터페이스인 것을 명시하기 위해  "@JavascriptInterface"를 추가 해줍니다.
        * 메소드 명이 곧 자바스트립트 이름임으로 반드시 기억하고 있어야 합니다.
 **/
        @JavascriptInterface
 public void webview_message(){
    //자바스크립트를 받아 처리 해야 하는 코딩
           Intent i = new Intent(mContext,MainActivity.class);
    mContext.startActivity(i);
 }
cs



이제 안드로이드 준비는 끝이 났습니다. 실제 웹페이지에서 자바스크립트를 호출 해주면 됩니다.

window. + "자바스크립트 구분 값" . + "자바스크립트 메소드 이름"으로 호출 하면 됩니다.

예를 들어 "자바스크립트 구분 값"에 "android"로 넣고 메소드의 이름이 "webview_message"이라면 웹페이지에서는 아래와 같이 호출 해주면 됩니다.


1
window.android.webview_message();
cs


댓글