일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 워크식스
- 홈페이지제작
- plugin
- 쇼핑몰
- 홈페이지
- 커스터마이징
- 고도몰
- 웹퍼블리싱
- 튜닝
- 플러그인
- JQuery
- 3D프린터
- 쇼핑몰구축
- 홈페이지구축
- 포트폴리오
- 제이쿼리
- 웹디자이너
- 개발자
- jQuery Plugin
- work6.kr
- 안드로이드
- 프로그래머
- 쇼핑몰제작
- CSS
- 웹개발자
- 웹디자인
- 웹에이전시
- 웹퍼블리셔
- 사이트제작
- PHP
- Today
- Total
그냥 개발자 블로그
뒤로 버튼 눌렀을때 동작 처리하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 7 본문
웹뷰에서는 뒤로 가기를 눌렀을때 이전 페이지로 가지 않고, 앱이 닫혀 버리는 현상이 발생 합니다.
이를 위해서 별도의 처리를 해줘야 합니다.
1. MainActiviey 자바 클래스에서 다음을 추가 해줍니다.
public class MainActivity extends AppCompatActivity {
WebView mWebView;
TextView errorVeiw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//푸시프로세스(FCM)
FirebaseMessaging.getInstance().subscribeToTopic("notice");
//에러메시지 내보낼 텍스트뷰
errorVeiw = (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);
errorVeiw.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://papaya9.co.kr/m2");
}
@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);
}
}
[목차]
1. 프로젝트 생성 하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 1
2. 푸시 사용 준비하기 (FCM) - 안드로이드 모바일웹으로 하이브리드앱 만들기 2
3. 푸시 기능 만들기 (FCM) - 안드로이드 모바일웹으로 하이브리드앱 만들기 3
4. 푸시 테스트 하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 4
5. 웹뷰추가하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 5
6. 웹뷰에서 자바스크립트 동작 처리하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 6
7. 뒤로 버튼 눌렀을때 동작 처리하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 7
8. 인트로(스플레시) 만들기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 8
9. 아이콘 설정하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 9
10. 테스트용 APK 추출하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 10
copyright (c) 2017 워크식스
'프로그래밍팁 > android' 카테고리의 다른 글
아이콘 설정하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 9 (0) | 2017.06.12 |
---|---|
인트로(스플레시) 만들기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 8 (0) | 2017.06.12 |
웹뷰에서 자바스크립트 동작 처리하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 6 (1) | 2017.06.12 |
웹뷰추가하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 5 (0) | 2017.06.12 |
푸시 테스트 하기 - 안드로이드 모바일웹으로 하이브리드앱 만들기 4 (0) | 2017.06.11 |