Skip to content

Commit 24e156c

Browse files
author
Jan Guegel
committed
Merge branch 'FossifyOrg:main' into main
Signed-off-by: Jan Guegel <[email protected]>
1 parent 3528a95 commit 24e156c

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

app/src/main/kotlin/org/fossify/filemanager/activities/SaveAsActivity.kt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package org.fossify.filemanager.activities
22

3+
import android.annotation.SuppressLint
34
import android.content.Intent
45
import android.net.Uri
56
import android.os.Bundle
7+
import android.os.Environment
8+
import androidx.core.net.toUri
69
import org.fossify.commons.dialogs.FilePickerDialog
710
import org.fossify.commons.extensions.*
811
import org.fossify.commons.helpers.NavigationIcon
912
import org.fossify.commons.helpers.ensureBackgroundThread
13+
import org.fossify.commons.helpers.isRPlus
1014
import org.fossify.filemanager.R
1115
import org.fossify.filemanager.databinding.ActivitySaveAsBinding
1216
import org.fossify.filemanager.extensions.config
@@ -15,9 +19,18 @@ import java.io.File
1519
class SaveAsActivity : SimpleActivity() {
1620
private val binding by viewBinding(ActivitySaveAsBinding::inflate)
1721

22+
companion object {
23+
private const val MANAGE_STORAGE_RC = 201
24+
}
25+
1826
override fun onCreate(savedInstanceState: Bundle?) {
1927
super.onCreate(savedInstanceState)
20-
setContentView(binding.root)
28+
if (isRPlus() && !Environment.isExternalStorageManager()) {
29+
val intent = Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
30+
intent.data = "package:$packageName".toUri()
31+
startActivityForResult(intent, MANAGE_STORAGE_RC)
32+
return
33+
}
2134

2235
if (intent.action == Intent.ACTION_SEND && intent.extras?.containsKey(Intent.EXTRA_STREAM) == true) {
2336
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden(), showFAB = true, showFavoritesButton = true) {
@@ -72,4 +85,18 @@ class SaveAsActivity : SimpleActivity() {
7285
return filename.replace("[/\\\\<>:\"|?*\u0000-\u001F]".toRegex(), "_")
7386
.takeIf { it.isNotBlank() } ?: "unnamed_file"
7487
}
88+
89+
@SuppressLint("NewApi")
90+
override fun onActivityResult(requestCode: Int, resultCode: Int, dataIntent: Intent?) {
91+
super.onActivityResult(requestCode, resultCode, dataIntent)
92+
93+
if (requestCode == MANAGE_STORAGE_RC && isRPlus()) {
94+
if (Environment.isExternalStorageManager()) {
95+
recreate()
96+
} else {
97+
toast(R.string.no_storage_permissions)
98+
finish()
99+
}
100+
}
101+
}
75102
}

0 commit comments

Comments
 (0)