flutter

[Flutter] 권한 요청 하는 법

킹왕짱지지 2024. 3. 26. 20:44

1. permission_handler 외부패키지 설치필요

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  pomission_handler: ^8.3.0

2. main.dart에 패키지 임포트 

import 'package:permission_handler/permission_handler.dart';

3. Android 기기 셋팅

android/gradle.properties

org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true

 

android/app/build.gradle

android {
    compileSdkVersion flutter.compileSdkVersion //또는 compileSdkVersion 31로 하기

 

android/app/src/main.AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.contact">

   //여기부터 추가
   <uses-permission android:name="android.permission.READ_CONTACTS"/>
   <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

 

4. 권한 요청

class _MyAppState extends State<MyApp> {

  getPermission() async {
    var status = await Permission.contacts.status;
    if (status.isGranted) {
      print('허락됨');
    } else if (status.isDenied) {
      print('거절됨');
      Permission.contacts.request(); // 허락해달라고 팝업 띄우는 코드
      openAppSettings(); //앱 설정 화면 켜줌
    }
  }

 

+ 위젯 실행하자 마자 권한요청 또는 이벤트를 실행하고 싶다면?

initState!!
하지만 이상한 앱이 엄청 많은 요즘에는 맞지 않음! 

@override
void initState() {
  // TODO: implement initState
  super.initState();
  getPermission();
}

 

클릭으로 실행

appBar: AppBar(
          title: Text(total.toString()),
          actions:[IconButton(onPressed: (){getPermission();}, icon: Icon(Icons.contacts))],
          ),