내 응용 프로그램은 HTTP 게시 요청을하는 경우가 꽤 있습니다. 테스트 도중 사용자가 비행기 모드에있을 때이 요청이 이루어지면 앱이 다운되는 것을 발견했습니다. 따라서이 상황을 우아하게 처리하려는 노력의 일환으로 AsyncTask
호출을 수행하기 전에 전화가 비행기 모드인지 여부를 테스트하는 함수를 호출합니다. 함수가 true를 반환하면 AsyncTask
호출을하지 않습니다.HTTP 요청으로 비행기 모드 처리
테스트 자체가 올바르게 작동합니다. 사용자는 비행기 모드를 끄고 돌아와 다시 시도해야한다는 통보를받습니다. 문제는 비행기 모드가 꺼지고 AsyncTask
이 진행되면 내 HTTP 게시물이 앱을 중단한다는 것입니다. 비행기 모드가 처음에는 켜지지 않으면 모든 것이 원활하게 진행됩니다.
나는 무엇을해야할지 알 수 없습니다. 비행기 모드를 테스트하는 더 좋은 방법이 있습니까? 또는 HTTP 요청이 성공할 수 있도록 시스템 상태를 복원하기 위해 AsyncTask
을 차단 한 후 다른 작업이 필요합니다.
모든 조언을 주시면 감사하겠습니다. 다음은이를 좀더 명확하게하기위한 코드입니다. 도움이 될 추가 코드가 있으면 알려 주시기 바랍니다. 감사! 당신은 비행기 모드에서 무선 랜을 가질 수 있기 때문에 혼자 아마 좋은 생각이 아니다
public class UserFunctions {
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public boolean isAirplaneModeOn(Context context) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
return Settings.Global.getInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
} else {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}
}
public void warnAboutAirplaneMode(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setTitle("Airplane Mode Is On")
.setIcon(R.raw.airplane_mode)
.setCancelable(false)
.setMessage("Your phone is in airplane mode. Please turn this off then try again.")
.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
네트워크에 문제가 많지 않습니까? 사용자는 여전히 비행기 모드에서 Wi-Fi를 사용할 수 있습니다. 문제가 올바르게 이해되면 네트워크 연결이 가능한지 확인해야합니다. – snotyak
좋은 지적. 내 생각 엔 당신이 맞다. – Alex