패키지 설치
1. pubspec.yaml 파일에 dependencies: 를 찾아 permission_handler: ^8.3.0 을 입력
dependencies:
flutter:
sdk: flutter
permission_handler: ^8.3.0
2. 옆에 전구 모양 아이콘 클릭하여 pub get 실행
3. import 'package:permission_handler/permission_handler.dart'; 를 main.dart 파일 가장 상단에 추가
- permission_handler.dart 파일에 있는 함수와 변수들을 가져다쓸 수 있게 해주는 문법이다.
Android 기기 설정
1. android/gradle.properties 파일 확인
- 아래 코드가 입력되어 있는지 확인 후 없으면 추가
android.useAndroidX=true
android.enableJetifier=true
2. andorid/app/build.gradle 파일
- 아래 코드가 31로 되어있는지 확인
- 다른 숫자면 31로 변경
- 숫자 대신 문자가 채워져 있으면 그냥 냅두기
android {
compileSdkVersion 31
3. android/app/main/AndroidManifest 파일에 코드 추가
- <mainfest ~~ > 아래, <application ~~~> 위에 작성
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
연락처 권한 확인
- Permission.contacts 에서 contacts 말고 camera, location 같은 거 써서 카메라, 위치 권한 허락 받을 수 있음
- Permission.contacts.status 라고 사용하면 연락처 권한 상태를 출력할 수 있음
- await이 붙은 이유는 await 뒤에 있는 문장이 실행되는 속도가 느리기 때문에 Dart 언어의 특징으로는 다음 줄을 먼저 실행할 것임
- 그렇기 때문에 await을 붙여 다음 줄을 실행하지 않고 기다려 달라는 뜻이다.
- await은 async 안에 붙어 있어야 한다.
getPermission() async {
var status = await Permission.contacts.status;
if (status.isGranted) {
print('허락됨');
} else if (status.isDenied) {
print('거절됨');
Permission.contacts.request(); // 현재 거절된 상태니 팝업창 띄워달라는 코드
}
}
- Permission.contacts.request() 는 사용자에게 연락처 사용 권한을 달라고 요청
→ 주의
- Android 11버전 이상과 iOS에서는 유저가 한 두번 이상 권한 요청을 거절하면 다시는 팝업을 띄울 수 없음
- 앱 설정 오픈해서 유저가 직접 설정을 바꿔야 함
- openAppSettings(); 을 작성하면 앱 설정을 오픈해줌
'Web & Android > Flutter' 카테고리의 다른 글
[Flutter] null check 하는 법 & Android 앱 발행 (0) | 2023.09.12 |
---|---|
[Flutter] 사용자 연락처 불러오기 (0) | 2023.09.12 |
[Flutter] 버튼에 기능 부여하는 법 (0) | 2023.09.12 |
[Flutter] 레이아웃 위젯 (0) | 2023.09.12 |
[Flutter] Lint 관련 워닝 무시하는 법 (0) | 2023.09.12 |