Notice
Recent Posts
Recent Comments
Link
투케이2K
84. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 앱 네이티브 뒤로 가기 이벤트 발생 시 페이지 전환 및 액티비티 종료 브릿지 통신 로직 본문
투케이2K 로직정리
84. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 앱 네이티브 뒤로 가기 이벤트 발생 시 페이지 전환 및 액티비티 종료 브릿지 통신 로직
투케이2K 2024. 10. 15. 19:50[로직 정리]
정리 로직 : Android / 안드로이드
상태 : [android] 안드로이드 웹뷰 (webview) 앱 네이티브 뒤로 가기 이벤트 발생 시 페이지 전환 및 액티비티 종료 브릿지 통신 로직
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
- 안드로이드 특정 URL 을 로드 하기 위한 웹뷰 클래스 생성 필요
- 사전 기능 동작 협의를 위해 인터페이스 정의 필요
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. 안드로이드 웹뷰에서 로드 시 사전) 자바스크립트 허용 및 브릿지 통신 경로 지정 실시
>> webview.getSettings().setJavaScriptEnabled(true); // [자바 스크립트 허용]
>> main_webview.addJavascriptInterface(new AndroidBridge(), "android"); // [android 라는 특정 브릿지 통신 명칭 / AndroidBridge 브릿지 통신 클래스 생성 필요]
2. 웹뷰 브릿지 통신을 위한 JavascriptInterface 클래스 지정 실시 (Web >> App 호출 받기 위함)
class AndroidBridge {
// ----------------------------------------------------------
// [자바스크립트에서 호출하는 안드로이드 메소드]
// ----------------------------------------------------------
// [Web To App : window.android.setMessage("");]
// ----------------------------------------------------------
@JavascriptInterface
public void setMessage(final String arg) {
js_handler.post(new Runnable() {
public void run() {
try {
}
catch (Exception e){
e.printStackTrace();
}
}
});
}
}
3. 앱 네이티브에서 특정 뒤로가기 이벤트 발생 시 >> 웹 function 함수 호출 및 현재 URL 전달 수행 실시
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
try {
// [웹뷰 function 호출 및 URL 전달 수행]
webview.loadUrl("javascript:checkUrl('"+String.valueOf(webview.getUrl())+"')");
}
catch (Exception e){
//e.printStackTrace();
}
}
return true;
}
4. 웹 에서는 function 에서 특정 url 명령이 들어온 경우 페이지 뒤로 가기 및 액티비티 종료 여부를 네이티브 앱 에게 브릿지 명령 전달 수행
>> window.android.setMessage("https:// ... ");
5. 앱 네이티브에서는 해당 브릿지로 들어온 파라미터 값이 널 인 경우 액티비티 종료 수행 , http 주소가 포함 된 경우 특정 URL 로 웹뷰 load 수행 실시
>> webview.loadUrl(웹에서 내려 준 URL 데이터);
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[안드로이드 웹뷰 유틸 클래스]
https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist
[기본 브릿지 통신 소스 코드]
https://blog.naver.com/kkh0977/222359952926?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments