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);
}
// 네트워크 타입 확인 |
'안드로이드 > Android 활용' 카테고리의 다른 글
안드로이드 푸쉬 메시지 전송을 위한 토큰 DB 등록 (2) | 2017.03.28 |
---|---|
Android 문자 보내는 방법2(Using the SmsManager API) (0) | 2017.03.03 |
Android 문자보내는 방법 1 (Using Intent) (0) | 2017.03.03 |
전화번호 표시 정리 코드 (0) | 2017.02.24 |
안드로이드 하나의 Activity 단위로 파일 생성하기 (ListView 처리) (0) | 2016.06.18 |