728x90

2초 이내에 뒤로 가기 버튼은 두번 눌러서 어플을 종료하는 코드다.

나중에 요긴하게 사용할 거 같아서 적어둔다.


====== BackPressCloseHandler.java =======

import android.app.Activity;
import android.widget.Toast;

public class BackPressCloseHandler {
    private long backKeyPressedTime = 0;
    private Toast toast;

    private Activity activity;

    public BackPressCloseHandler(Activity context) {
        this.activity = context;
    }

    public void onBackPressed() {
        // 2초 이내에 뒤로 가기 버튼을 두번 누르면 종료처리
        if (System.currentTimeMillis() > backKeyPressedTime + 2000) {
            backKeyPressedTime = System.currentTimeMillis();
            showGuide();
            return;
        }
        if (System.currentTimeMillis() <= backKeyPressedTime + 2000) {
            activity.finish();
            toast.cancel();
        }
    }

    public void showGuide() {
        toast = Toast.makeText(activity,"\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT);
        toast.show();
    }
}



====== MainActivity.java 에 추가할 내용 ============

네트워크 연결 상태 확인 및 뒤로가기 관련 코드 추가


public class MainActivity extends Activity {
   
    private BackPressCloseHandler backPressCloseHandler;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE); // 타이틀바 없애기

        setContentView(R.layout.activity_main);

        if( !isNetworkConnected(this) ){
            new AlertDialog.Builder(this)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setTitle("네트워크 연결 오류").setMessage("네트워크 연결 상태 확인 후 다시 시도해 주십시요.")
            .setPositiveButton("확인", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick( DialogInterface dialog, int which )
                {
                    finish();
                }
            }).show();
        }
       
        backPressCloseHandler = new BackPressCloseHandler(this);
    }

    // 어플 실행시 연결상태 확인하기
    public boolean isNetworkConnected(Context context){
        boolean isConnected = false;

        ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (mobile.isConnected() || wifi.isConnected()){
            isConnected = true;
        } else {
            isConnected = false;
        }
        return isConnected;
    }
   
    @Override
    public void onBackPressed() {
        //super.onBackPressed();
        backPressCloseHandler.onBackPressed();
    }
}


onBackPressed() 함수 대신에 아래 코드를 넣으면 백버튼을 누르면 종료할 것인지 여부를 물어본다.

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if( keyCode == KeyEvent.KEYCODE_BACK ) {
            new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Quit").setMessage("어플을 종료하시겠습니까?").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick( DialogInterface dialog, int which) {
                    finish();
                }
        }).setNegativeButton( "No", null ).show();
     
        return true;
      }
       
      return super.onKeyDown(keyCode, event);
     }
   


// 네트워크 타입 확인
private String getNetworkTypeInfo(){
    ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    return networkInfo.getTypeName();
}

Toast.makeText(this, getNetworkTypeInfo()+" 네트워크에 연결되었습니다",Toast.LENGTH_LONG).show();


블로그 이미지

Link2Me

,