diff --git a/limbo-android-lib/src/main/AndroidManifest.xml b/limbo-android-lib/src/main/AndroidManifest.xml
index 66775b5a0..198f4fd76 100644
--- a/limbo-android-lib/src/main/AndroidManifest.xml
+++ b/limbo-android-lib/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+
@@ -17,6 +18,10 @@
-
+
\ No newline at end of file
+
+
+
diff --git a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/utils/FileManager.java b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/utils/FileManager.java
index 5192655a8..fa4f983c6 100644
--- a/limbo-android-lib/src/main/java/com/max2idea/android/limbo/utils/FileManager.java
+++ b/limbo-android-lib/src/main/java/com/max2idea/android/limbo/utils/FileManager.java
@@ -163,8 +163,25 @@ private static int getASFFileManagerRequestCode(int requestCode) {
}
}
+ private static void requestStorageManager(Activity activity, int requestCode) {
+ if (android.os.Build.VERSION.SDK_INT >= 30) { // Android 11
+ try {
+ if(!Environment.isExternalStorageManager()) {
+ Intent i = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ i.setData(Uri.fromParts("package", activity.getPackageName(), null));
+ activity.startActivityForResult(i, requestCode);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Error requesting storage manager permission: " +
+ e.getMessage());
+ }
+ }
+ }
+
public static void promptLegacyStorageAccess(Activity activity, LimboActivity.FileType fileType, int requestCode, String lastDir) {
+ requestStorageManager(activity, requestCode);
+
String dir = null;
try {
@@ -192,6 +209,9 @@ public static Intent getFileManIntent(Activity activity) {
}
protected static void promptOpenFileASF(Activity context, LimboActivity.FileType fileType, int requestCode, String lastDir) {
+
+ requestStorageManager(activity, requestCode);
+
Intent intent = null;
if (isFileTypeDirectory(fileType))
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);