Android(Java) - 대화 상자로 사용자에게 GPS 설정 페이지 보여주기

반응형

 

GPS 기능을 비활성화 하였을 때 설정 페이지로 이동하기

// MainActivity onRequestPermissionsResult
// GPS 사용자 기기의 현재 위치 정보 확인 및 권한 설정
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    // 사용 권한이 허용되어있으면 위치를 받아오는 코드 실행
    if (ContextCompat.checkSelfPermission(MainActivity.this,
            Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            && ContextCompat.checkSelfPermission(MainActivity.this,
            Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        getLocation();
    }
    else if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    	// GPS가 비활성화 되어있으면 설정 대화 상자 출력
        showGPSDisabledAlertToUser();
    }
    else { // 사용 권한이 없으면 권한 추가
        ActivityCompat.requestPermissions(MainActivity.this,
                new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, 100);
    }
}
    

// GPS 기능 설정 대화 상자 출력
private void showGPSDisabledAlertToUser(){
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setMessage("GPS 기능이 비활성화되어 있습니다.\n기능을 활성화하시겠습니까?")
            .setCancelable(false)
            .setPositiveButton("GPS 설정 페이지로 이동하기",
                    (dialog, id) -> {
                        Intent callGPSSettingIntent = new Intent(
                                android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        startActivity(callGPSSettingIntent);
                    });
    alertDialogBuilder.setNegativeButton("취소",
            (dialog, id) -> dialog.cancel());
    AlertDialog alert = alertDialogBuilder.create();
    alert.show();
}
}

실행 화면

  • GPS 기능을 비활성화 하였을 때의 화면

 

  • GPS 설정 페이지로 이동하기를 누른 화면

반응형