Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- html5
- Mail Server
- roundcube
- 설치
- FCM
- 안드로이드 푸쉬
- chart.js
- 자동 생성
- not working
- mysql
- 자바스크립트
- 폼메일
- 우분투
- 안드로이드 gcm
- WebView
- curl
- php 시큐어코딩
- 안드로이드 푸시
- 안드로이드
- xe
- php 취약점
- C# IO
- C#
- dovecot
- android 효과음
- Android
- PHP
- soundpool
- UML
- javascript
Archives
- Today
- Total
그러냐
WebView App 액티비티간 통신하기 본문
반응형
로컬 HTML(JavaScript)과 App 영역이 통신(함수호출)을 함으로써 간단한 하이브리드 앱을 만들어볼 수 있다.
1. HTML에서 App 함수 호출
1) 멤버로 android.os.Handler 를 생성한다. 호출 시 thread 처리를 위해서 이용된다.
private final Handler handler = new Handler();
2) App과 Javascript간 Bridge 클래스를 생성하고, 호출될 함수를 implement 한다.
(이 때 파리메터는 반드시 final로 선언)
Javascript에서 호출시 별도의 Thread로 구동될 수 있도록 아래와 같이 구현한다.
4) HTML 내에서 JavaScript에서 선언된 함수를 다음과 같이 호출 한다.
window.<interfaceName>.<functionName>
2. App에서 HTML의 Javascript 함수 호출
이부분은 간단하다....HTML에거 링크걸 때를 생각하면 되는데....
그냥 버튼을 눌렀을 때 다음과 같이 호출하면 된다.
mWebView.loadUrl("javascript:<함수명>('<arg>')");
실제 구현은 다음과 같이 된다.
위의 방법으로 연결된 간단한 하이브리드 어플리케이션이다...
1. HTML에서 App 함수 호출
1) 멤버로 android.os.Handler 를 생성한다. 호출 시 thread 처리를 위해서 이용된다.
private final Handler handler = new Handler();
2) App과 Javascript간 Bridge 클래스를 생성하고, 호출될 함수를 implement 한다.
(이 때 파리메터는 반드시 final로 선언)
Javascript에서 호출시 별도의 Thread로 구동될 수 있도록 아래와 같이 구현한다.
private class AndroidBridge {
public void setMessage(final String arg) { // must be final
handler.post(new Runnable() {
public void run() {
Log.d("HybridApp", "setMessage("+arg+")");
mTextView.setText(arg);
}
});
}
}
public void setMessage(final String arg) { // must be final
handler.post(new Runnable() {
public void run() {
Log.d("HybridApp", "setMessage("+arg+")");
mTextView.setText(arg);
}
});
}
}
3) onCreate 함수에서 WebView에서 JavaScript를 Enable 하고, JavaScriptInterface로 Bridge 인스턴스를 등록한다.
// 웹뷰에서 자바스크립트실행가능
mWebView.getSettings().setJavaScriptEnabled(true);
// Bridge 인스턴스 등록
mWebView.addJavascriptInterface(new AndroidBridge(), "HybridApp");
mWebView.getSettings().setJavaScriptEnabled(true);
// Bridge 인스턴스 등록
mWebView.addJavascriptInterface(new AndroidBridge(), "HybridApp");
4) HTML 내에서 JavaScript에서 선언된 함수를 다음과 같이 호출 한다.
window.<interfaceName>.<functionName>
window.HybridApp.setMessage(msg);
2. App에서 HTML의 Javascript 함수 호출
이부분은 간단하다....HTML에거 링크걸 때를 생각하면 되는데....
그냥 버튼을 눌렀을 때 다음과 같이 호출하면 된다.
mWebView.loadUrl("javascript
실제 구현은 다음과 같이 된다.
mButton.setOnClickListener( new OnClickListener(){
public void onClick(View view) {
mWebView.loadUrl("javascript:setMessage('"+mEditText.getText()+"')");
}
});
public void onClick(View view) {
mWebView.loadUrl("javascript
}
});
위의 방법으로 연결된 간단한 하이브리드 어플리케이션이다...
출처 : http://blog.naver.com/PostView.nhn?blogId=q1q3q5&logNo=10097104676
===== 다른글 =====
http://human2p.tistory.com/entry/App%EC%95%B1%EC%99%80-WebVew-%EA%B0%84%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%84%B0data-%ED%86%B5%EC%8B%A0
반응형
'android' 카테고리의 다른 글
GCM보다 더 간편하게 FCM으로 푸시알림 구현하기 Part1 (0) | 2017.02.08 |
---|---|
WebView File Upload (0) | 2017.02.01 |
안드로이드 Gallery 에서 imageview 이미지뷰로 뿌리기 (0) | 2017.01.16 |
안드로이드 파일 복사 (0) | 2017.01.16 |
Encryption AES256 = C# + Objective C(ios) + PHP + JAVA(Android) + Perl + Javascript + Python (0) | 2017.01.13 |