-
[Android Studio] 안드로이드 하이브리드앱 만들기 4: 뒤로 버튼 눌렀을 때 동작 처리개발 프로세스/Back-end 2021. 8. 24. 15:55
1. Main Activity 에 새로 추가되는 코드
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mWebView.canGoBack()) { mWebView.goBack(); return false; } } return super.onKeyDown(keyCode, event); }
2. Main Activity 전체 코드
package com.example.carbondiet; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.TextView; public class MainActivity extends AppCompatActivity { WebView mWebView; TextView errorView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //에러메시지 내보낼 텍스트뷰 errorView = (TextView) findViewById(R.id.net_error_view); //웹페이지 mWebView = (WebView) findViewById(R.id.activity_main_webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } //네트워크연결에러 @Override public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) { switch(errorCode) { case ERROR_AUTHENTICATION: break; // 서버에서 사용자 인증 실패 case ERROR_BAD_URL: break; // 잘못된 URL case ERROR_CONNECT: break; // 서버로 연결 실패 case ERROR_FAILED_SSL_HANDSHAKE: break; // SSL handshake 수행 실패 case ERROR_FILE: break; // 일반 파일 오류 case ERROR_FILE_NOT_FOUND: break; // 파일을 찾을 수 없습니다 case ERROR_HOST_LOOKUP: break; // 서버 또는 프록시 호스트 이름 조회 실패 case ERROR_IO: break; // 서버에서 읽거나 서버로 쓰기 실패 case ERROR_PROXY_AUTHENTICATION: break; // 프록시에서 사용자 인증 실패 case ERROR_REDIRECT_LOOP: break; // 너무 많은 리디렉션 case ERROR_TIMEOUT: break; // 연결 시간 초과 case ERROR_TOO_MANY_REQUESTS: break; // 페이지 로드중 너무 많은 요청 발생 case ERROR_UNKNOWN: break; // 일반 오류 case ERROR_UNSUPPORTED_AUTH_SCHEME: break; // 지원되지 않는 인증 체계 case ERROR_UNSUPPORTED_SCHEME: break; // URI가 지원되지 않는 방식 } super.onReceivedError(view, errorCode, description, failingUrl); mWebView.setVisibility(View.GONE); errorView.setVisibility(View.VISIBLE); } }); mWebView.setWebChromeClient(new WebChromeClient() { //alert 처리 @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { new AlertDialog.Builder(view.getContext()) .setTitle("알림") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setCancelable(false) .create() .show(); return true; } //confirm 처리 @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { new AlertDialog.Builder(view.getContext()) .setTitle("알림") .setMessage(message) .setPositiveButton("Yes", new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setNegativeButton("No", new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.cancel(); } }) .setCancelable(false) .create() .show(); return true; } }); mWebView.loadUrl("http://3.34.253.8/"); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mWebView.canGoBack()) { mWebView.goBack(); return false; } } return super.onKeyDown(keyCode, event); } }
https://playgroundblog.tistory.com/336
뒤로 버튼 눌렀을때 동작 처리하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 7
웹뷰에서는 뒤로 가기를 눌렀을때 이전 페이지로 가지 않고, 앱이 닫혀 버리는 현상이 발생 합니다. 이를 위해서 별도의 처리를 해줘야 합니다. 1. MainActiviey 자바 클래스에서 다음을 추가 해줍니
blog.work6.kr
'개발 프로세스 > Back-end' 카테고리의 다른 글
[Python] 입출력 (0) 2021.10.09 [Android Studio] 안드로이드 하이브리드앱 만들기 5: 인트로(스플레시 이미지) 만들기 (0) 2021.08.24 [Android Studio] 안드로이드 하이브리드앱 만들기 3: 웹뷰 자바스크립트 동작 처리하기 (0) 2021.08.24 [Android Studio] 안드로이드 하이브리드앱 만들기 2: 웹뷰 추가하기 (0) 2021.08.24 [Android Studio] 안드로이드 하이브리드앱 만들기 1: 프로젝트 생성하기 (0) 2021.08.24