Browse Source

Prpoperly exit headless fragments

merge-requests/61/head
Geoffrey Métais 8 years ago
parent
commit
5354d5e85e
  1. 1
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/BaseHeadlessFragment.kt
  2. 16
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt
  3. 9
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt

1
vlc-android/src/org/videolan/vlc/gui/helpers/hf/BaseHeadlessFragment.kt

@ -37,6 +37,7 @@ open class BaseHeadlessFragment : Fragment() {
}
protected fun exit() {
retainInstance = false
activity?.run {
if (!isFinishing) supportFragmentManager
.beginTransaction()

16
vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt

@ -72,8 +72,9 @@ class StoragePermissionsDelegate : BaseHeadlessFragment() {
}
private fun requestStorageAccess(write: Boolean) {
requestPermissions(arrayOf(if (write) Manifest.permission.WRITE_EXTERNAL_STORAGE else Manifest.permission.READ_EXTERNAL_STORAGE),
if (write) Permissions.PERMISSION_WRITE_STORAGE_TAG else Permissions.PERMISSION_STORAGE_TAG)
val code = if (write) Manifest.permission.WRITE_EXTERNAL_STORAGE else Manifest.permission.READ_EXTERNAL_STORAGE
val tag = if (write) Permissions.PERMISSION_WRITE_STORAGE_TAG else Permissions.PERMISSION_STORAGE_TAG
requestPermissions(arrayOf(code), tag)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
@ -85,20 +86,21 @@ class StoragePermissionsDelegate : BaseHeadlessFragment() {
storageAccessGranted.value = true
deferredGrant.complete(true)
exit()
return
} else {
if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
Permissions.showStoragePermissionDialog(ctx, false)
return
} else {
storageAccessGranted.value = false
deferredGrant.complete(false)
exit()
}
}
storageAccessGranted.value = false
deferredGrant.complete(false)
exit()
}
Permissions.PERMISSION_WRITE_STORAGE_TAG -> {
deferredGrant.complete(grantResults.isGranted())
exit()
}
Permissions.PERMISSION_WRITE_STORAGE_TAG -> deferredGrant.complete(grantResults.isGranted())
}
}

9
vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt

@ -7,10 +7,10 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.DocumentsContract
import androidx.fragment.app.FragmentActivity
import androidx.documentfile.provider.DocumentFile
import androidx.appcompat.app.AlertDialog
import android.text.TextUtils
import androidx.appcompat.app.AlertDialog
import androidx.documentfile.provider.DocumentFile
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.launch
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.vlc.R
@ -73,6 +73,7 @@ class WriteExternalDelegate : BaseHeadlessFragment() {
if (treeFile?.name == file?.name) {
contentResolver.releasePersistableUriPermission(uriPermission.uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
deferredGrant.complete(false)
exit()
return
}
}
@ -80,10 +81,12 @@ class WriteExternalDelegate : BaseHeadlessFragment() {
// else set permission
contentResolver.takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
deferredGrant.complete(true)
exit()
return
}
}
deferredGrant.complete(false)
exit()
}
companion object {

Loading…
Cancel
Save