diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index f47bab2e..fb6edbd6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + diff --git a/lib/components/library/user_local_tracks.dart b/lib/components/library/user_local_tracks.dart index 86880820..a36be283 100644 --- a/lib/components/library/user_local_tracks.dart +++ b/lib/components/library/user_local_tracks.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:catcher/catcher.dart'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; @@ -169,11 +170,25 @@ class UserLocalTracks extends HookConsumerWidget { useAsyncEffect( () async { if (!kIsMobile) return; - if (!await Permission.storage.isGranted && - !await Permission.storage.isLimited) { + + final androidInfo = await DeviceInfoPlugin().androidInfo; + + final hasNoStoragePerm = androidInfo.version.sdkInt < 33 && + !await Permission.storage.isGranted && + !await Permission.storage.isLimited; + + final hasNoAudioPerm = androidInfo.version.sdkInt >= 33 && + !await Permission.audio.isGranted && + !await Permission.audio.isLimited; + + if (hasNoStoragePerm) { await Permission.storage.request(); if (isMounted()) ref.refresh(localTracksProvider); } + if (hasNoAudioPerm) { + await Permission.audio.request(); + if (isMounted()) ref.refresh(localTracksProvider); + } }, null, [], diff --git a/pubspec.lock b/pubspec.lock index 778e23f6..a41249e8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -419,13 +419,13 @@ packages: source: hosted version: "1.1.0" device_info_plus: - dependency: transitive + dependency: "direct main" description: name: device_info_plus - sha256: "9b1a0c32b2a503f8fe9f8764fac7b5fcd4f6bd35d8f49de5350bccf9e2a33b8a" + sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659" url: "https://pub.dev" source: hosted - version: "9.0.0" + version: "9.0.3" device_info_plus_platform_interface: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 9a77cb32..85aba0cf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -102,6 +102,7 @@ dependencies: google_fonts: ^4.0.4 supabase: ^1.9.9 dio: ^5.3.2 + device_info_plus: ^9.0.3 dev_dependencies: build_runner: ^2.3.2