돌아오신것을 환영합니다
이번 영상에서는 헬퍼 클래스를 이용하여 우리에게 특정 권한이 있는지 없는지
확인해보겠습니다
사용자 인터페이스(UI)에 매번 모든 코드를 작성하고 싶지 않기때문에
헬퍼 클래스를 만드는 것입니다 헬퍼 클래스는 우리가 확인하고 싶을때
위치에 대한 액세스 권한이 있는지 아니면 권한이 없는지 확인하는것을
도와줍니다
간단하게 말해서 사용자가 GPS 사용을 허용했는지 안했는지 입니다
좋습니다
그러기 위해서 저는 새로운 Kotlin 파일을 만들어서 LocationUtils라고
하겠습니다
Location(위치) Utils는
Utilities(유틸리티)죠
그리고 여기 필요한것은 context(콘텍스트)입니다
그러니 val context가 context(콘텍스트)가 될 것입니다
다음 영상에서 context(콘텍스트)가 무엇인지 약간의 스토리와 배경을 얘기 하겠습니다
안드로이드 어플리케이션에서 location(위치)를 사용할때는 컨텍스트가 무엇인지
이해하는것이 정말 중요합니다
일단 여기에 function(함수)를 만들겠습니다 hasLocationPermission
이것에 필요한것은 context(콘텍스트)입니다
그러면 boolean을 반환하게 됩니다
그러니까 이 함수의 기능은 우리가 위치권한에 액세스가 있는지 없는지 확인하는 것입니다
그러니까
그런 권한이 승인이 됐는지 안됐는지 확인용입니다
그것을 확인하려면 이렇게 if(ContextCompat)를 쓰는데 이것은 안드로이드 코어 컨텐츠에 딸려오는
클래스 입니다
그러니 그것을 import 해야합니다
ContextCompat. 라고 하고 보시면
여기에 checkSelfPermission이라는 함수나 메소드가 있습니다
이것은 우리가 콘텍스트와 우리가 확인하길 원하는 permission(권한)을 패스 할 수
있게 합니다
그러니 우리는 permission.
Axis
아니 우선 permission을 import하는게 편하겠습니다
그럼 여기 android.Manifest.permission이 보입니다
좋아요
그게 우리가 원하는 것 입니다
이제 우리한테 있는 android manifest가 android Manifest.permission을 줬습니다
그러면 이제 여기 보여지는 권한설정들을 사용할 수 있습니다
Access fine 위치와 coarse 위치
그러니 예를들어 저는 fine을
써보겠습니다
그러면 fine_location을 보여줍니다
상세 위치정보에 대한 권한이 있는지 알고싶다면 저는 여기 이것을 써서
진짜로 그 권한이
있는지 확인 가능합니다
체크하려는것은 이 이중등호 후에 나옵니다
제가 비교하고싶은것은 우리가 왼쪽에 가지고 있는것이 오른쪽에 가지고 있는것과 동일한가 입니다
오른쪽에 어떤것이 들어갈지 보여드리겠습니다
바로 패키지 매니저를 사용할것인데
그러니까 여기 package manager
어디봅시다
이게 맞는것 같네요
PackageManager.
Permission_Granted
여기서 확인하는것은
이 permission_granted 문자열이 fine location에 있냐는것입니다
그렇다면 return true라고 하고 }else{ 후에 return false 라고 합니다
그러면 이 함수는 우리에게 권한이 있는지 없는지 확인할것 입니다
여기 또 보여지는게 있습니다 return을 if 위로 빼라고 합니다
그렇다면 이런식으로 return if 문장을 사용할 수 있습니다. 그리고 더 효율적인 방법이 또 있네요. 반복적인 if 문장을
빼라고 합니다
그냥 이 모든것을 return으로 사용하라고 말해줍니다
그러면 우리에겐 ContextCompt.checkSelfPermission이 있습니다 그것을 확인해보면
SelfPermission이 int(정수)를 반환한다고 합니다
하지만 저희는 int(정수)가 필요한것이 아닙니다
우리가 찾는것은
여기 보시다싶이 boolean이 필요합니다
그래서 우리가 확인하는것이 이 checkSelfPermission에서 나오는 int가 permission_granted에서
ㅤ
나오는 int와 같은지 입니다
그러니까 여러분의 디바이스에서 액세스 승인을 했는지 확인하는것입니다
여러분의 스마트폰 설정에 있는것으로
어떤 어플리케이션이 GPS에 권한이 있고 어떤것들이 없는지 설정할 수 있습니다
지금 이것은 fine location(상세위치)이지만 저는 coarse(대략적인 위치)도 확인 하고싶습니다
제가 할것은 이 &&을 사용해서 이 위에 있는 전체 문장을 복사해서
이 밑으로 붙힌다음 access_fine_location을 coarse location으로 바꿉니다
그렇게 하면
제가 하고싶었던게 이것입니다
이제 기본적으로 GPS기능을 확인할수 있는 코드가 생겼고 보통 fine location을 사용하고 싶다면
Coarse location을 같이 쓰는것이 일반적입니다
그러니까 항상 확인하세요
그 둘에 대한 권한 승인은 보통 같이 됩니다
사용자에게 이 앱이 GPS를 사용해도 되냐고 물어봤을때
여기에 보여질것입니다
우리가 하고싶었던것이 이거였습니다
이제 이 함수는 사용자의 디바이스에서 안드로이드의 위치 기능에
액세스 할 수 있는지 확인하고싶을때 사용 할 수 있습니다
우리가 패스해야 할것은 context 뿐입니다
다음 영상에선 context에 대해 더 알아보겠습니다
거기서 봐요