굉장히 오랜만에 블로그 포스팅을 하게되었다.
우선. 이번 포스팅은 Android13 권한문제때문에 작성하게되었다.
Flutter Version
Flutter 3.10.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 796c8ef792 (3 months ago) • 2023-06-13 15:51:02 -0700
Engine • revision 45f6e00911
Tools • Dart 3.0.5 • DevTools 2.23.1
기존 권한설정
우선 Flutter -Android 에서 핸드폰의 내부데이터를 접근하기위해서 사용하는 권한은 다음과 같다.
AndroidManifest.xml을 살펴보면
와 같은 권한 설정이있는데, 어느순간부터 권한이 잘 되지않는다는 문의가 들어와서 확인을 해보았다.
Android13 권한 업데이트
https://developer.android.com/about/versions/13/behavior-changes-13?hl=ko
권한이 Android13되면서 업데이트된 내용이 몇몇 있다. 확인해보니,
유저의 핸드폰 내부데이터를 세분화되어 권한을 얻어야한다고 적혀있다.
해결법
기존에 사용하던 'android.permission.READ_EXTERNAL_STORAGE' 는 Android12까지만 적용되게 하고, 그 이상부터는 새로 적용되는 권한을 AndroidManifest.xml에 추가하면 된다.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
이렇게 작성해주면 끝!... 은 아니고, Flutter에서 사용하는 Permission_handler도 적용해야한다.
_androidStoragePermission() async {
int androidVersion = 0;
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
androidVersion = int.tryParse(androidInfo.version.release) ?? 0;
}
if (androidVersion > 12) {
await Permission.photos.request();
await Permission.videos.request();
await Permission.audio.request();
} else {
await Permission.storage.request();
}
}
이렇게 android 버전을 확인해서 분기태워주면 끝이다.
'Study > Dart,Flutter' 카테고리의 다른 글
19. [Dart, Flutter] extension에 대하여 [1부] (0) | 2024.01.08 |
---|---|
18. [Dart, Flutter] dart enum에 대하여 (0) | 2024.01.08 |
[Flutter] 디자인패턴 MVVM과 riverpod (1부 MVVM) (1) | 2023.03.18 |
17. [Flutter] 플러터의 성능향상을 위한 꿀팁 (3부 const) (0) | 2023.03.10 |
[Flutter, 플러터] path_provider_ios 및 FirebaseCoreDiagnostics 오류 해결 (0) | 2023.01.31 |