mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
check the new permission at copying to SD card
This commit is contained in:
@ -25,7 +25,6 @@ import kotlinx.android.synthetic.main.activity_main.*
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Breadcrumbs.BreadcrumbsListener {
|
class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Breadcrumbs.BreadcrumbsListener {
|
||||||
val OPEN_DOCUMENT_TREE = 1
|
|
||||||
var mBasePath = getInternalStoragePath()
|
var mBasePath = getInternalStoragePath()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -138,10 +137,10 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
|
|||||||
fun checkStupidAndroidFiveSDCardWritePermission(pickedPath: String): Boolean {
|
fun checkStupidAndroidFiveSDCardWritePermission(pickedPath: String): Boolean {
|
||||||
val file = File(pickedPath)
|
val file = File(pickedPath)
|
||||||
return if (!file.canWrite() && Utils.needsStupidWritePermissions(applicationContext, pickedPath) && mConfig.treeUri.isEmpty()) {
|
return if (!file.canWrite() && Utils.needsStupidWritePermissions(applicationContext, pickedPath) && mConfig.treeUri.isEmpty()) {
|
||||||
WritePermissionDialog(this, object: WritePermissionDialog.OnWritePermissionListener {
|
WritePermissionDialog(this, object : WritePermissionDialog.OnWritePermissionListener {
|
||||||
override fun onConfirmed() {
|
override fun onConfirmed() {
|
||||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
||||||
startActivityForResult(intent, OPEN_DOCUMENT_TREE)
|
startActivityForResult(intent, OPEN_DOCUMENT_TREE_AND_CHANGE_PATH)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
false
|
false
|
||||||
@ -149,28 +148,36 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
|
||||||
public override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
public override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, resultData)
|
super.onActivityResult(requestCode, resultCode, resultData)
|
||||||
if (requestCode == OPEN_DOCUMENT_TREE) {
|
if (requestCode == OPEN_DOCUMENT_TREE_AND_CHANGE_PATH) {
|
||||||
if (resultCode == Activity.RESULT_OK && resultData != null) {
|
if (resultCode == Activity.RESULT_OK && resultData != null) {
|
||||||
val treeUri = resultData.data
|
saveTreeUri(resultData)
|
||||||
mConfig.treeUri = resultData.data.toString()
|
|
||||||
|
|
||||||
val takeFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
|
||||||
contentResolver.takePersistableUriPermission(treeUri, takeFlags)
|
|
||||||
|
|
||||||
changePath(getSDCardPath())
|
changePath(getSDCardPath())
|
||||||
} else {
|
} else {
|
||||||
changePath(getInternalStoragePath())
|
changePath(getInternalStoragePath())
|
||||||
}
|
}
|
||||||
|
} else if (requestCode == OPEN_DOCUMENT_TREE && resultCode == Activity.RESULT_OK && resultData != null) {
|
||||||
|
saveTreeUri(resultData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||||
|
private fun saveTreeUri(resultData: Intent) {
|
||||||
|
val treeUri = resultData.data
|
||||||
|
mConfig.treeUri = resultData.data.toString()
|
||||||
|
|
||||||
|
val takeFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||||
|
contentResolver.takePersistableUriPermission(treeUri, takeFlags)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val STORAGE_PERMISSION = 1
|
private val STORAGE_PERMISSION = 1
|
||||||
private val BACK_PRESS_TIMEOUT = 5000
|
private val BACK_PRESS_TIMEOUT = 5000
|
||||||
|
|
||||||
|
val OPEN_DOCUMENT_TREE_AND_CHANGE_PATH = 1
|
||||||
|
val OPEN_DOCUMENT_TREE = 2
|
||||||
|
|
||||||
private var mWasBackJustPressed: Boolean = false
|
private var mWasBackJustPressed: Boolean = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.simplemobiletools.filemanager.dialogs
|
package com.simplemobiletools.filemanager.dialogs
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.Intent
|
||||||
import android.support.v4.util.Pair
|
import android.support.v4.util.Pair
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@ -9,6 +10,7 @@ import android.widget.Toast
|
|||||||
import com.simplemobiletools.filemanager.Config
|
import com.simplemobiletools.filemanager.Config
|
||||||
import com.simplemobiletools.filemanager.R
|
import com.simplemobiletools.filemanager.R
|
||||||
import com.simplemobiletools.filemanager.Utils
|
import com.simplemobiletools.filemanager.Utils
|
||||||
|
import com.simplemobiletools.filemanager.activities.MainActivity
|
||||||
import com.simplemobiletools.filemanager.asynctasks.CopyTask
|
import com.simplemobiletools.filemanager.asynctasks.CopyTask
|
||||||
import com.simplemobiletools.filemanager.extensions.rescanItem
|
import com.simplemobiletools.filemanager.extensions.rescanItem
|
||||||
import com.simplemobiletools.filemanager.extensions.toast
|
import com.simplemobiletools.filemanager.extensions.toast
|
||||||
@ -70,6 +72,16 @@ class CopyDialog(val activity: Activity, val files: List<File>, val path: String
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Utils.needsStupidWritePermissions(context, destinationPath) && Config.newInstance(context).treeUri.isEmpty()) {
|
||||||
|
WritePermissionDialog(activity, object: WritePermissionDialog.OnWritePermissionListener {
|
||||||
|
override fun onConfirmed() {
|
||||||
|
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
||||||
|
activity.startActivityForResult(intent, MainActivity.OPEN_DOCUMENT_TREE)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
|
||||||
if (view.dialog_radio_group.checkedRadioButtonId == R.id.dialog_radio_copy) {
|
if (view.dialog_radio_group.checkedRadioButtonId == R.id.dialog_radio_copy) {
|
||||||
context.toast(R.string.copying)
|
context.toast(R.string.copying)
|
||||||
val pair = Pair<List<File>, File>(files, destinationDir)
|
val pair = Pair<List<File>, File>(files, destinationDir)
|
||||||
|
Reference in New Issue
Block a user