diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 0c668c76..f636252f 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -320,6 +320,10 @@ class SettingsListState extends State { var extDir = await getExternalStorageDirectory(); Log.i("Ext Dir: $extDir"); + if (await _isDirWritable(path) == false) { + path = extDir.path; + } + if (path == null || path.isEmpty) { settings.storeInternally = true; settings.storageLocation = ""; @@ -519,3 +523,17 @@ class VersionNumberTileState extends State { ); } } + +Future _isDirWritable(String path) async { + var fileName = DateTime.now().millisecondsSinceEpoch.toString(); + var file = File(p.join(path, fileName)); + + try { + await file.writeAsString("test"); + await file.delete(); + } catch (_) { + return false; + } + + return true; +}