Skip to content

Commit

Permalink
Add more storage permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
BinaryQuantumSoul committed Feb 9, 2025
1 parent 3a539d6 commit 37a0454
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:requestLegacyExternalStorage="true"
android:name="${applicationName}"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher"
Expand Down
19 changes: 13 additions & 6 deletions lib/esde.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import 'dart:io';

import 'package:device_info_plus/device_info_plus.dart';
import 'package:esde_android/storage.dart';
import 'package:installed_apps/app_info.dart';
import 'package:permission_handler/permission_handler.dart';

class EsDeUtils {
static Future<void> prepareEsDeFiles(
List<AppInfo> apps,
List<AppInfo> games,
List<AppInfo> emulators,
SettingsProvider settingsProvider) async {
static Future<void> prepareEsDeFiles(List<AppInfo> apps, List<AppInfo> games,
List<AppInfo> emulators, SettingsProvider settingsProvider) async {
final List<String> mediaDirs = [
'3dboxes',
'backcovers',
Expand All @@ -34,6 +33,13 @@ class EsDeUtils {
final Directory romDirectory = Directory('$romPath/$system');
final Directory mediaDirectory = Directory('$mediaPath/$system');

if (Platform.isAndroid &&
(await DeviceInfoPlugin().androidInfo).version.sdkInt >= 30) {
await Permission.manageExternalStorage.request();
} else {
await Permission.storage.request();
}

if (settingsProvider.overwriteDirs) {
if (await romDirectory.exists()) {
await romDirectory.delete(recursive: true);
Expand All @@ -55,7 +61,8 @@ class EsDeUtils {
if (!settingsProvider.doNotSaveMedia) {
for (var media in mediaDirs) {
if (app.icon != null) {
final File file = File('$mediaPath/$system/$media/$escapedName.png');
final File file =
File('$mediaPath/$system/$media/$escapedName.png');
await file.create(recursive: true);
await file.writeAsBytes(app.icon!);
}
Expand Down
2 changes: 2 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ dependencies:
provider: ^6.1.2
quiver: ^3.2.1
flutter_launcher_icons: ^0.13.1
permission_handler: ^11.3.1
device_info_plus: ^11.3.0

flutter_launcher_icons:
image_path: "icon/icon.png"
Expand Down

0 comments on commit 37a0454

Please sign in to comment.