File tree 3 files changed +20
-2
lines changed
3 files changed +20
-2
lines changed Original file line number Diff line number Diff line change 7
7
<uses-permission android : name =" android.permission.WRITE_EXTERNAL_STORAGE" />
8
8
<!-- Needed for reading files opened with the app -->
9
9
<uses-permission android : name =" android.permission.READ_EXTERNAL_STORAGE" />
10
+ <uses-permission android : name =" android.permission.MANAGE_EXTERNAL_STORAGE" />
11
+
10
12
11
13
<!-- Install update APKs -->
12
14
<uses-permission android : name =" android.permission.REQUEST_INSTALL_PACKAGES" />
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ import 'package:saber/data/file_manager/file_manager.dart';
10
10
import 'package:saber/data/nextcloud/saber_syncer.dart' ;
11
11
import 'package:saber/data/prefs.dart' ;
12
12
import 'package:saber/i18n/strings.g.dart' ;
13
+ import 'package:saber/main_common.dart' ;
13
14
14
15
class SettingsDirectorySelector extends StatelessWidget {
15
16
const SettingsDirectorySelector ({
@@ -114,7 +115,7 @@ class _DirectorySelectorState extends State<DirectorySelector> {
114
115
115
116
final dir = Directory (directory);
116
117
_directory = directory;
117
- _isEmpty = dir.existsSync () ? dir.listSync ().isEmpty : true ;
118
+ _isEmpty = ( dir.existsSync () ? dir.listSync ().isEmpty : true ) || true ;
118
119
119
120
if (! mounted) return ;
120
121
setState (() {});
@@ -123,6 +124,9 @@ class _DirectorySelectorState extends State<DirectorySelector> {
123
124
void _onConfirm () {
124
125
Prefs .customDataDir.value = _directory;
125
126
context.pop ();
127
+ if (Platform .isAndroid) {
128
+ requestStoragePermission ();
129
+ }
126
130
}
127
131
128
132
@override
Original file line number Diff line number Diff line change @@ -28,6 +28,19 @@ import 'package:saber/pages/user/login.dart';
28
28
import 'package:window_manager/window_manager.dart' ;
29
29
import 'package:worker_manager/worker_manager.dart' ;
30
30
import 'package:workmanager/workmanager.dart' ;
31
+ import 'package:permission_handler/permission_handler.dart' ;
32
+
33
+ Future <void > requestStoragePermission () async {
34
+ final status = await Permission .manageExternalStorage.request ();
35
+ if (status.isGranted) {
36
+ // Permission is granted
37
+ } else if (status.isDenied) {
38
+ // Permission is denied
39
+ } else if (status.isPermanentlyDenied) {
40
+ // Permission is permanently denied
41
+ openAppSettings (); // Open app settings to manually grant permission
42
+ }
43
+ }
31
44
32
45
Future <void > main (
33
46
List <String > args, {
@@ -36,7 +49,6 @@ Future<void> main(
36
49
void Function (Widget ) runApp = runApp,
37
50
}) async {
38
51
initWidgetsBinding ();
39
-
40
52
final parser = ArgParser ()..addFlag ('verbose' , abbr: 'v' , negatable: false );
41
53
final parsedArgs = parser.parse (args);
42
54
You can’t perform that action at this time.
0 commit comments