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://developer.android.com/training/permissions/requesting.html