22 lines
884 B
Dart
22 lines
884 B
Dart
import 'dart:io';
|
|
|
|
import 'package:device_info_plus/device_info_plus.dart';
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
/// Fragt die zum Lesen der Musik nötige Berechtigung an und meldet, ob erteilt.
|
|
/// - Android 13+ (API 33): READ_MEDIA_AUDIO
|
|
/// - Android < 13: READ_EXTERNAL_STORAGE
|
|
/// - iOS / Desktop: kein Laufzeit-Grant nötig (Sandbox bzw. vom Nutzer gewählte
|
|
/// Ordner sind bereits freigegeben).
|
|
Future<bool> ensureAudioPermission() async {
|
|
if (!Platform.isAndroid) return true;
|
|
final info = await DeviceInfoPlugin().androidInfo;
|
|
final permission =
|
|
info.version.sdkInt >= 33 ? Permission.audio : Permission.storage;
|
|
final status = await permission.request();
|
|
return status.isGranted;
|
|
}
|
|
|
|
/// Öffnet die System-Einstellungen der App (für dauerhaft verweigerte Rechte).
|
|
Future<void> openMusicPermissionSettings() => openAppSettings();
|