돌아오신것을 환영합니다
이번 영상에서는 request permission 런처를 추가해보겠습니다
이미 우리가 전에 만들었던 런처로 이것이 위치권한을 요청하도록 도와줍니다
어떤게 필요했는지 기억하시나요?
사실 이전 프로젝트를 나란히 열어두고 비교하거나 코드를 복사하면서
사용하실수도 있습니다
어제 만든 위치 앱에는 이 requestPermissionLauncher을 만들었었습니다
ㅤ
이 rememberLauncherForActivity도 있습니다
저는 이 모든것을 다 복사하겠습니다
여기까지 전부다 복사해서
이것을 쇼핑리스트 앱에 넣겠습니다
ItemQuantity 밑부분으로 가져옵니다
이제 위치권한을 요청하도록 도와주는 권한요청 런처가 있습니다
제가 전에 말했다싶이 이 코드는 만들어두면 정말 편리해서
앞으로 필요할때마다 사용하시면 됩니다
좋아요
다음으로는 요청을 하는 버튼을 만들겠습니다
그것은 AlertDialog 안에 넣겠습니다
여기엔 if(showDialog), AlertDialog 그리고 쇼핑아이템을 추가하라는 버튼도 있습니다
Cancel도 있고
그 밑에 title “Add Shopping Item”도 있었고 OutlinedTextField와 또 itemQuantity를 관리하는
다른 OutlinedTextField도 있습니다
그리고 이 OutlinedTextField 바로 밑에
그러니까 이 컬럼 안에 새로운 버튼을 만들고 onClick 이벤트를 추가합니다
여기에서 확인하고싶은것은 locationUtils.hasLocationPermission (locationUtils에 권한이 있는지)
그리고 context를 패스합니다
권한이 있다면 여기서 사용할 수 있습니다
먼저 오류를 해결하기 위해 버튼 내용을 추가하겠습니다
여기서는 위치 권한이 있다면 위치 업데이트를 요청할 수 있고 viewModel을 패스할 수 있습니다
어제한것과 매우 비슷합니다
ㅤ
그리고 navController을 사용하여 탐색 할 수 있습니다
저는 “locationscreen”으로 navigate 할 것입니다
이 locationscreen이 어디서 오냐면
이것은 MainActivity에서 설정을 해야 하는 경로인데
이름은 이렇게 사용하겠습니다
그리고 이 navController.navigate에 this.launchSingleTop을 추가합니다
this.launchSingleTop은
불리언을 관리하고
이 navigation 작업이 single-top을 실행해야 하는지 여부를 나타냅니다
예를 들어 백스택 상단에는 지정된 대상의 복사본이 최대 하나가 있습니다
다시말해 스택 내부에는 한가지 화면만 있어야 하고
여러가지는
안된다는것 입니다
이것은 위치 권한이 있으면 발생하는것 입니다
만약
위치 권한이 없다면 권한 요청 런처를 실행하지 말라고 요청하는것 입니다
그래서 이 권한 실행 프로그램을 복사해 온것입니다
어제 만들었던 권한을 요청하는 이 requestPermissionLauncher을
ㅤ
여기서 사용하는 것 입니다
만약 위치 사용에 대한 권한이 없다면 런처를 실행하고
사용하려는 다양한 권한을 패스하는것 입니다
그러니 여기서 Manifest.permission.
그리고 여기는 fine_location과
Manfiest.permission. Coarse 위치도 사용합니다
여기 이것을 사용하고 이 버튼의 텍스트는 ‘주소’ 라고 해야 합니다
여기에 그런 버튼을 추가하겠습니다
좋아요
이제 어플리케이션을 다시 실행하여 지금까지 만든것을 보여드리고 싶지만
이 쇼핑리스트 앱에 패스 할 모든것이 준비 된 후에만 할 수 있습니다
그것을 하기 전에 먼저 nav host를 설정해야 합니다
그리고 API 서비스를 디코딩 할 수 있는 인터페이스도 구축해야 합니다
그런것들을 다음 영상에서 보여드리도록 하겠습니다