티스토리 뷰
안드로이드에서는 웹페이지를 표시 해주는 방법중에 가장 많이 사용 하는 것이 바로 웹뷰(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 |
'IT > Android' 카테고리의 다른 글
[Android]java.lang.VerifyError: Rejecting class 해결방법 (0) | 2017.05.27 |
---|---|
[Android] android.content.ActivityNotFoundException: No Activity found to handle Intent 해결방법 (0) | 2017.05.26 |
[Android]TextView 텍스트 색상 code로 변경하기 (0) | 2017.05.01 |
[Android]Error generating final archive: Found duplicate file for APK: AndroidManifest.xml 해결 방법 (0) | 2017.04.30 |
[Android]자신의 전화번호 가져오기 (0) | 2017.04.17 |
댓글
TAG
- 단면폭
- 티스토리 초대장
- 7700K
- ONLINE JSON
- GPU 출시
- 투표소
- 배달 지연
- 민주당 대선 후보
- GPU 출시가격
- 국기 다는 시간
- 림의 외경
- 1800X
- 블로그 개설
- 오픈베타
- 포아너
- Looper.prepare()
- unbound prefix
- 사제 쿨러
- 다렉
- 19대 선거
- 한글패치
- 1800TI
- JSON PASER
- 하이엔드 그래픽카드
- 초대장
- 예약메일 전송
- 한글 패치
- 테일즈 오브 베르세리아
- 라이젠
- 래디어 구조
최근에 올라온 글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
공지사항
반응형