[Flutter] 권한 팝업 요청 기능

2023. 9. 12. 10:48·Web & Android/Flutter

패키지 설치

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 앱 발행  (1) 2023.09.12
[Flutter] 사용자 연락처 불러오기  (0) 2023.09.12
[Flutter] 버튼에 기능 부여하는 법  (0) 2023.09.12
[Flutter] 레이아웃 위젯  (0) 2023.09.12
[Flutter] Lint 관련 워닝 무시하는 법  (0) 2023.09.12
'Web & Android/Flutter' 카테고리의 다른 글
  • [Flutter] null check 하는 법 & Android 앱 발행
  • [Flutter] 사용자 연락처 불러오기
  • [Flutter] 버튼에 기능 부여하는 법
  • [Flutter] 레이아웃 위젯
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    리눅스마스터
    backjoon
    시큐리티
    프로그래머스
    백준
    programmers
    스프링
    Flutter
    스프링부트
    CS
    pcce 기출문제
    데이터
    Java
    DB
    자바
    postgresql
    baekjoon
    리눅스
    python
    springboot
    Spring Security
    데이터베이스
    spring
    Oracle
    JPA
    Linux
    리눅스마스터 1급
    플러터
    CS지식
    스프링 부트 쇼핑몰 프로젝트 with JPA
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[Flutter] 권한 팝업 요청 기능
상단으로

티스토리툴바