mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-02-01 11:07:01 +01:00
show a confirmation dialog before redirecting to the device settings
This commit is contained in:
parent
3c8a67349a
commit
3294bc26a7
@ -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,12 +307,15 @@ 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()) {
|
||||||
|
ConfirmationAdvancedDialog(this, "", R.string.access_storage_prompt, R.string.ok, 0) { success ->
|
||||||
|
if (success ) {
|
||||||
isAskingPermissions = true
|
isAskingPermissions = true
|
||||||
actionOnPermission = callback
|
actionOnPermission = callback
|
||||||
try {
|
try {
|
||||||
@ -320,20 +324,31 @@ class MainActivity : SimpleActivity() {
|
|||||||
intent.data = Uri.parse("package:$packageName")
|
intent.data = Uri.parse("package:$packageName")
|
||||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
showErrorToast(e)
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
||||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user