차근차근/Android

[HybridApp] webview 메인페이지에서 앱종료하기

예쁜꽃이피었으면 2014. 11. 17. 15:23

http://domoyosi.tistory.com/26


네이버, 다음 등 포털사이트 및 여러 하이브리드앱들을 살펴보면

메인페이지에서 뒤로가기를 두번 누르면 앱이 종료되는 것을 볼 수 있다.

구현방법이야 여러가지 케이스가 있을 수 있겠으나

webview를 사용한다는 점을 이용하기로 했다.

webview는 현재 로드한 페이지의 url을 얻을 수 있다.

1
webView.getOriginalUrl()
1
webView.getUrl()

둘다 String형으로 현재 페이지의 url을 뱉어준다.

 

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
32
33
<p>    private final static String MAIN_URL = "http://your site url/";
     
    private final Handler handler = new Handler();
     
    // BACK 2번 클릭 시 종료 핸들러. 플래그
    private Handler mHandler;
    private boolean mFlag = false;
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
     
        // 디바이스의 키 이벤트가 발생했는데, 뒤로가기 이벤트일때  
        if (keyCode == KeyEvent.KEYCODE_BACK) {
             
            // 현재 페이지가 메인페이지 일경우 toast를 출력하고 종료여부를 결정한다.
            if ( webView.getOriginalUrl().equalsIgnoreCase(MAIN_URL) || webView.getOriginalUrl().equalsIgnoreCase(MAIN_URL+"index.jsp") ) {
                if(!mFlag) {
                    Toast.makeText(this, "'뒤로'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();    // 종료안내 toast 를 출력
                    mFlag = true;
                    mHandler.sendEmptyMessageDelayed(0, 2000);    // 2000ms 만큼 딜레이
                    return false;
                } else {
                    // 앱 종료 code
                }
            } else {               
                // 뒤로 가기 실행
                if ( webView.canGoBack() ) {
                    webView.goBack();
                    return true;
                }
            }
}
</p>

 

line 16 : 웹소스내에 메인페이지로 가는 링크가 "/" 이 아닌 "/index.jsp" 로 해둔 경우가 있을 수도 있으므로 index.jsp 를 추가하여 필터링한다.(사용하시는 분들은 asp, aspx, php 등으로 수정해서 사용하시면 됩니다.)

반응형