@@ -6,6 +6,7 @@ import 'package:get/get.dart';
66import 'dart:developer' as developer;
77import 'package:open_filex/open_filex.dart' ;
88import 'package:pure_live/common/index.dart' ;
9+ import 'package:device_info_plus/device_info_plus.dart' ;
910import 'package:pure_live/common/utils/hive_pref_util.dart' ;
1011import 'package:pure_live/recorder/ffmpeg/ffmpeg_event.dart' ;
1112import 'package:pure_live/recorder/ffmpeg/ffmpeg_types.dart' ;
@@ -149,20 +150,30 @@ class RecorderController extends GetxService {
149150 Future <bool > requestStoragePermission () async {
150151 if (! Platform .isAndroid) return true ;
151152
152- if (Platform .isAndroid && int .parse (Platform .operatingSystemVersion.split ('.' )[0 ]) >= 11 ) {
153- // 先检查是否已经授权
154- if (await Permission .manageExternalStorage.isGranted) {
155- return true ;
156- }
157- final status = await Permission .manageExternalStorage.request ();
158- if (status.isGranted) {
159- return true ;
153+ try {
154+ final deviceInfo = DeviceInfoPlugin ();
155+ final androidInfo = await deviceInfo.androidInfo;
156+ final sdkInt = androidInfo.version.sdkInt;
157+ if (sdkInt >= 30 ) {
158+ if (await Permission .manageExternalStorage.isGranted) {
159+ return true ;
160+ }
161+ final status = await Permission .manageExternalStorage.request ();
162+ if (status.isGranted) {
163+ return true ;
164+ }
165+ } else {
166+ if (await Permission .storage.isGranted) {
167+ return true ;
168+ }
169+ final status = await Permission .storage.request ();
170+ if (status.isGranted) {
171+ return true ;
172+ }
160173 }
161- } else {
174+ } catch (e) {
162175 final status = await Permission .storage.request ();
163- if (status.isGranted) {
164- return true ;
165- }
176+ if (status.isGranted) return true ;
166177 }
167178
168179 ToastUtil .show (i18n ('no_storage' ));
0 commit comments