Use FileSelectorDialogFragment when sdk < Q

This commit is contained in:
Tlaster 2020-04-21 15:33:55 +08:00
parent ecf1776eb1
commit cdc5a24102
1 changed files with 28 additions and 23 deletions

View File

@ -24,14 +24,16 @@ import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Environment.getExternalStorageDirectory
import android.widget.Toast import android.widget.Toast
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import org.mariotaku.ktextension.Bundle
import org.mariotaku.ktextension.checkAllSelfPermissionsGranted import org.mariotaku.ktextension.checkAllSelfPermissionsGranted
import org.mariotaku.ktextension.set
import org.mariotaku.twidere.R import org.mariotaku.twidere.R
import org.mariotaku.twidere.TwidereConstants.REQUEST_REQUEST_PERMISSIONS import org.mariotaku.twidere.TwidereConstants.REQUEST_REQUEST_PERMISSIONS
import org.mariotaku.twidere.constant.IntentConstants.INTENT_ACTION_PICK_DIRECTORY import org.mariotaku.twidere.constant.IntentConstants.*
import org.mariotaku.twidere.constant.IntentConstants.INTENT_ACTION_PICK_FILE
import org.mariotaku.twidere.fragment.FileSelectorDialogFragment import org.mariotaku.twidere.fragment.FileSelectorDialogFragment
import java.io.File import java.io.File
import android.Manifest.permission as AndroidPermissions import android.Manifest.permission as AndroidPermissions
@ -65,7 +67,7 @@ class FileSelectorActivity : BaseActivity(), FileSelectorDialogFragment.Callback
} }
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,
grantResults: IntArray) { grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults) super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_REQUEST_PERMISSIONS) { if (requestCode == REQUEST_REQUEST_PERMISSIONS) {
executeAfterFragmentResumed { executeAfterFragmentResumed {
@ -114,28 +116,31 @@ class FileSelectorActivity : BaseActivity(), FileSelectorDialogFragment.Callback
} }
private fun showPickFileDialog() { private fun showPickFileDialog() {
Intent().apply { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (intent.action == INTENT_ACTION_PICK_FILE) { Intent().apply {
action = Intent.ACTION_GET_CONTENT if (intent.action == INTENT_ACTION_PICK_FILE) {
type = "*/*" action = Intent.ACTION_GET_CONTENT
} else if (intent.action == INTENT_ACTION_PICK_DIRECTORY) { type = "*/*"
action = Intent.ACTION_OPEN_DOCUMENT_TREE } else if (intent.action == INTENT_ACTION_PICK_DIRECTORY) {
action = Intent.ACTION_OPEN_DOCUMENT_TREE
}
}.also {
startActivityForResult(
Intent.createChooser(it, getString(R.string.pick_file)),
PICKER_REQUEST_CODE
)
} }
}.also { } else {
startActivityForResult( val initialDirectory = intent?.data?.path?.let(::File) ?: getExternalStorageDirectory()
Intent.createChooser(it, getString(R.string.pick_file)), ?: File("/")
PICKER_REQUEST_CODE val f = FileSelectorDialogFragment()
) f.arguments = Bundle {
this[EXTRA_ACTION] = intent.action
this[EXTRA_PATH] = initialDirectory.absolutePath
this[EXTRA_FILE_EXTENSIONS] = intent.getStringArrayExtra(EXTRA_FILE_EXTENSIONS)
}
f.show(supportFragmentManager, "select_file")
} }
// val initialDirectory = intent?.data?.path?.let(::File) ?: getExternalStorageDirectory() ?: File("/")
// val f = FileSelectorDialogFragment()
// f.arguments = Bundle {
// this[EXTRA_ACTION] = intent.action
// this[EXTRA_PATH] = initialDirectory.absolutePath
// this[EXTRA_FILE_EXTENSIONS] = intent.getStringArrayExtra(EXTRA_FILE_EXTENSIONS)
// }
// f.show(supportFragmentManager, "select_file")
} }
} }