mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
show a confirmation dialog before redirecting to the device settings
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.simplemobiletools.filemanager.pro.activities
|
package com.simplemobiletools.filemanager.pro.activities
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.SearchManager
|
import android.app.SearchManager
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
@@ -16,9 +17,10 @@ import android.provider.Settings
|
|||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.core.view.MenuItemCompat
|
import androidx.core.view.MenuItemCompat
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.*
|
import com.simplemobiletools.commons.helpers.*
|
||||||
@@ -46,7 +48,6 @@ import kotlinx.android.synthetic.main.items_fragment.view.*
|
|||||||
import kotlinx.android.synthetic.main.recents_fragment.*
|
import kotlinx.android.synthetic.main.recents_fragment.*
|
||||||
import kotlinx.android.synthetic.main.storage_fragment.*
|
import kotlinx.android.synthetic.main.storage_fragment.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.Exception
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class MainActivity : SimpleActivity() {
|
class MainActivity : SimpleActivity() {
|
||||||
@@ -306,23 +307,31 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("InlinedApi")
|
||||||
private fun handleStoragePermission(callback: (granted: Boolean) -> Unit) {
|
private fun handleStoragePermission(callback: (granted: Boolean) -> Unit) {
|
||||||
actionOnPermission = null
|
actionOnPermission = null
|
||||||
if (hasStoragePermission()) {
|
if (hasStoragePermission()) {
|
||||||
callback(true)
|
callback(true)
|
||||||
} else {
|
} else {
|
||||||
if (isRPlus()) {
|
if (isRPlus()) {
|
||||||
isAskingPermissions = true
|
ConfirmationAdvancedDialog(this, "", R.string.access_storage_prompt, R.string.ok, 0) { success ->
|
||||||
actionOnPermission = callback
|
if (success ) {
|
||||||
try {
|
isAskingPermissions = true
|
||||||
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
|
actionOnPermission = callback
|
||||||
intent.addCategory("android.intent.category.DEFAULT")
|
try {
|
||||||
intent.data = Uri.parse("package:$packageName")
|
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
|
||||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
intent.addCategory("android.intent.category.DEFAULT")
|
||||||
} catch (e: Exception) {
|
intent.data = Uri.parse("package:$packageName")
|
||||||
val intent = Intent()
|
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||||
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
} catch (e: Exception) {
|
||||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
showErrorToast(e)
|
||||||
|
val intent = Intent()
|
||||||
|
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
||||||
|
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
||||||
@@ -330,10 +339,16 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
private fun hasStoragePermission(): Boolean {
|
private fun hasStoragePermission(): Boolean {
|
||||||
return if (isRPlus()) Environment.isExternalStorageManager() else hasPermission(PERMISSION_WRITE_STORAGE)
|
return if (isRPlus()) {
|
||||||
|
Environment.isExternalStorageManager()
|
||||||
|
} else {
|
||||||
|
hasPermission(PERMISSION_WRITE_STORAGE)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, resultData)
|
super.onActivityResult(requestCode, resultCode, resultData)
|
||||||
isAskingPermissions = false
|
isAskingPermissions = false
|
||||||
|
Reference in New Issue
Block a user