기억 저장소

클라우드 기반 인공지능 개발과 DevOps 실무

프론트엔드/안드로이드 스튜디오

안드로이드 스튜디오 : 구글 맵 위치 권한 허용 하기 /java.lang.SecurityException: my location requires permission ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION

하늘.98 2022. 3. 14. 10:18

java.lang.SecurityException: my location requires permission ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION

 

 at com.jhn.googlemaptest.MainActivity.onMapReady(MainActivity.java:93)

 

아래와 같은 오류가 뜨는 경우가 있을 경우가 있다. 

이런 오류가 뜨는 이유는 권한에 대한 오류이다. 

 

Android 6.0 (23- 마시멜로) 

이후로 부터는 필요한 권한이 있을 경우 사용자로부터 권한을 그때 받아야 한다 . 

그렇기 때문에 새로운 위치 권한 요청 코드가 필요하다 .

만일 요청 코드를 넣고 싶지 않을 경우에는 

targetsdk 23 으로 바꾸면 된다.

그치만 이미 23이상으로 구현 된 코드를 sdk 23으로 바뀐다고 바로 사용되지 않을 것이다. 

그렇기 때문에 권한 요청 코드를 넣어주면 된다. 

 

targetSdk 23

 

내가 사용한 코드는 아래와 같다. 

이 코드를 넣어 권한을 허용 시켜주면 문제 없이 앱이 사용된다.!

// 권한 허용
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);

if(permissionCheck == PackageManager.PERMISSION_DENIED){ //포그라운드 위치 권한 확인

    //위치 권한 요청
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);
}


int permissionCheck2 = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION);

if(permissionCheck == PackageManager.PERMISSION_DENIED){ //백그라운드 위치 권한 확인
    //위치 권한 요청
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION}, 0);
}

 

 

 

내가 이용한 블로그 사이트 

https://velog.io/@jaeyunn_15/Android-Android-%EC%9C%84%EC%B9%98-%EA%B6%8C%ED%95%9C-%EB%B3%80%EA%B2%BD-%EC%82%AC%ED%95%AD

 

[Android] Android 위치 권한 변경 사항 🧭

Android 11 버전 여러 업데이트 사항 중 개인정보 보호기능에서 크게 달라졌다는 글을 보았다.곧 Android 12가 출시 되겠지만 그래도... 여러 프로젝트를 해보면서 지도에서 사용자 위치 접근에 대한

velog.io

안드로이드 공식 사이트 

https://developer.android.com/training/permissions/requesting.html

 

앱 권한 요청  |  Android 개발자  |  Android Developers

앱 권한 요청 모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 앱이 자체 샌드박스 밖에 있는 리소스나 정보를 사용해야 하는 경우 권한을 선언하고 이 액세스를 제공하는 권한 요청

developer.android.com