-
[Flutter]플러터 권한(Permission) 얻기 메세지 |안드로이드, IOSFlutter_끄적끄적 2021. 11. 18. 00:34반응형
- 사용 패키지
permission_handler (안드로이드,IOS 권한 얻는 메세지 패키지) - 접근권한 설정
1-1. android 폴더-> gradle.properties 아래 내용 추가
android.useAndroidX=true android.enableJetifier=true
1-2. android 폴더-> app-> build.gradle에서
permission_handler패키지 버전에 따라 compileSdkVersion 숫자 이상 수정
permission_handler: ^6.1.0 버전은 compileSdkVersion 30에서 잘 작동
1-3. android폴더-> app-> src-> main-> AndroidManifest.xml 아래 내용 추가android { compileSdkVersion 30 .... }
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.appName"> //권한 얻기 작성 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:label="appName" android:icon="@mipmap/ic_launcher"> <activity //안드로이드 보안 업데이트로 인해 //파일을 읽고 쓰려면 아래와 같은 //android:requestLegacyExternalStorage="true" 추가작성 android:requestLegacyExternalStorage="true" android:name=".MainActivity" .....
- 사용 코드
Permission 권한 확인 코드
Future<bool>checkPermission()async{ //권한 확인(storage 권한 확인) bool status= await Permission.storage.isGranted; print('check 값:${status}'); if(status==true){ return true; }else{ return false; } }
Permission 권한 요청 코드
Future<bool>getPermission()async{ //권한 요청을 위해 요청할 권한 종류를 [디바이스 스토리지,디바이스 위치] 형식으로 담는다. Map<Permission,PermissionStatus>statuses=await [Permission.storage,Permission.location].request(); //권한이 없으면 isGranted는 false if(statuses[Permission.storage]!.isGranted){ return Future.value(true); } else{ //Permission은 최초 거부를 누르게되면 Permission 요청을 보내지 않는다. //따라서 openAppSettings(); 함수를 이용해 별도 사용자가 직접 권한을 켜줘야 한다. openAppSettings(); return Future.value(false); } }
- 주의할점
Permission 값을 한번이라도 거부 했을 경우 더 이상 Permission 요청 메세지는 나오지 않는다.
따라서 openAppSettings()라는 함수를 이용해 사용자에게 권한을 주도록 요청 해야 한다.
반응형'Flutter_끄적끄적' 카테고리의 다른 글
[Flutter]플러터 암/복호화(encrypt) |안드로이드, IOS (0) 2021.11.18 [Flutter]플러터 (공용 디렉토리 File 경로 읽기/쓰기) |안드로이드, IOS (0) 2021.11.18 [Flutter]플러터 (앱 디렉토리 File 경로 읽기/쓰기) |안드로이드, IOS (0) 2021.11.17 [Flutter]플러터 화면 고정 및 풀스크린 |안드로이드, IOS (0) 2021.11.16 [Flutter] 플러터 공부 노트 | 안드로이드,IOS (0) 2021.11.16 - 사용 패키지