위치가 앱의 핵심 기능이므로 사용자에게 위치 권한을 부여하기를 원합니다.사용자가 권한을 부여 할 때까지 사용자에게 허가를 요청하는 방법을 묻습니다.
허락을 위해 onResume
을 확인했지만 좋은 결과를 얻지 못했지만 사용자가 앱 간을 전환 할 수 있으며 권한 대화 상자가 이미 표시 될 수 있습니다. 이 같은 내가 그 권한 대화 상자가 표시됩니다 알고 플래그를 사용하여 생각하고, 그래서 뭔가 :
public void onResume(...)
{
if(!isDialogDisplayed)
{
isDialogDisplayed = true;
// check for permission here
}
}
나는 대화를 해제 할 때 false
에 isDialogDisplayed
를 설정해야합니다.
나는 이것을 할 수있는 가장 좋은 방법 인 다른 방법이 있는지 의심 스럽습니까?
private void checkForPermissions() {
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_FINE_LOCATION);
} else {
initializeViews();
}
}
initializeViews() 앱이 정상처럼 시작하는 것입니다 : 당신의 MainActivity의 ONSTART 방법에
나는 사용자가 당신에게 허가를주고 싶지 않은 시나리오를 다루는 적절한 방법이 아니라고 생각합니다. 사용자에게 요청하기 전에 권한이 필요한 이유를 사용자에게 알려주는 것이 좋습니다. 권한을 부여하지 않으면 롤백을 한 다음 기능을 사용하려고 시도하고 다시 사용하려고하면 다시 요청합니다. –
@ GabrielVasconcelos 내 시나리오에서 앱이 계속 위치를 모니터링한다는 것을 제외하고 나는 당신과 동의한다. 위치 권한없이 앱이 작동하지 않습니다. 정말 사용자가 허가를 받아야합니다. –
그런 다음 문제는 권한이 필요한지 여부가 아니라 사용자가 앱을 필요로하는지 여부와 그 앱이 무엇인지 알고 있는지 여부입니다. 즉, 앱을 종료하고 사용자가 언제 다시 방문하려고하는지 물어볼 수 있지만 어떤 일이 벌어지고 있는지 사용자에게 알려주는 것입니다. 다시 묻는 이유 또는 앱이 종료되는 이유 . –