[ 스프링과 안드로이드 연동5 : Javascript에서 Android 함수를 호출하기 ]
요즘은 웹을 개발하고 웹뷰를 이용해서 안드로이드에 붙이는 식으로 해서 반응형으로 하이브리드 앱을 만드는 경우가 많은데,
이러한 경우 웹뷰에서 버튼을 클릭한다거나 했을 때 자바스크립트에서 안드로이드에 있는 함수를 호출해서
안드로이드를 제어하고 싶은 경우가 있다.
----------------------------------------------------------------------------------------------------------------------------------
먼저, 웹뷰를 연결해 세팅부터 하자.
1. [ WebView(웹뷰) 세팅 ]
<!-- 인터넷 접속 권한 추가 -->
<uses-permission android:name="android.permission.INTERNET" />
를 manifest에 추가해주어야 하고
네트워크 작업은 백그라운드 쓰레드로 해야하며
백그라운드 쓰레드에서는 메인 뷰의 화면 제어를 할 수 없음으로
handler에게 대신해달라고 요청을 해야한다.
앞에선 계속 그렇게 해왔는데 이 2가지를 한번에 하는 것이
handler.post(new Runnable(){ run() }) 을 이용한 방식이다.
이런식으로해서 JavascriptInterface 클래스를 만들도록 한다.
function
callAndroid(){
var
str = document.getElementById("txtName").value;
window.myJSInterfaceName.callMethodName(str);
}
<
form
id
=
"formName"
action
=
""
>
<
input
id
=
"txtName"
type
=
"text" /
>
<
button
onclick
=
"javascript:callAndroid()"
>호출하기</
button
>
</
form
>
여기까지 했다면,
웹뷰 상에서 안드로이드 사용자가 "호출하기" 버튼을 클릭시에 callAndroid() 자바스크립트 메서드가 수행되고
해당 자바스크립트 메서드에서 window.myJSInterfaceName.callMethodName(str); 을 통해 안드로이드 메서드를
호출하여, TextView에 있는 메시지를 웹뷰를 통해 입력한 값으로 세팅하게 된다.
안드로이드 쪽 전체 코드는 다음과 같다.
'개발 > 스프링' 카테고리의 다른 글
[펌]자바 Crawling(크로울링) 로그인 해 긁어오기 (1) | 2017.07.30 |
---|---|
JAVA Crawling(크로울링) 기본([펌]http://partnerjun.tistory.com/guestbook) (0) | 2017.07.30 |
스프링과 안드로이드 연동4 : (JSON으로 가져오기) (2) | 2017.06.04 |
스프링과 안드로이드 연동3 : ( 서버에서 XML로 반환해 가져오기 ) (0) | 2017.06.04 |
스프링과 안드로이드 연동2 : 서버에서 안드로이드로 이미지 가져오기(다운) (2) | 2017.06.04 |