diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a31e421..98142e6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,7 @@
+
= Build.VERSION_CODES.TIRAMISU) {
- // Android 13+
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_IMAGES)
- != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this,
- new String[]{
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.READ_MEDIA_VIDEO,
- Manifest.permission.READ_MEDIA_AUDIO
- },
- PERMISSION_REQUEST_CODE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ // Android 11+ - Need MANAGE_EXTERNAL_STORAGE
+ if (!Environment.isExternalStorageManager()) {
+ try {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ intent.setData(Uri.parse("package:" + getPackageName()));
+ startActivity(intent);
+ Toast.makeText(this, "Please grant 'All files access' permission", Toast.LENGTH_LONG).show();
+ } catch (Exception e) {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
+ startActivity(intent);
+ }
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- // Android 6.0 - 12
+ // Android 6.0 - 10
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
@@ -172,6 +175,15 @@ public class MainActivity extends AppCompatActivity {
}
private void startFTPServer() {
+ // Check permission first
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ if (!Environment.isExternalStorageManager()) {
+ Toast.makeText(this, "Please grant 'All files access' permission first", Toast.LENGTH_LONG).show();
+ requestPermissions();
+ return;
+ }
+ }
+
if (!config.hasRootDirectory()) {
Toast.makeText(this, "Please select a root directory first", Toast.LENGTH_LONG).show();
return;