本地书籍无权限则保存到自己选定的文件夹

This commit is contained in:
gedoor 2021-12-30 22:12:43 +08:00
parent d118a2551e
commit 44f0a217bc

View File

@ -18,6 +18,8 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import java.io.FileOutputStream
class FileAssociationActivity :
VMBaseActivity<ActivityTranslucenceBinding, FileAssociationViewModel>() {
@ -91,10 +93,11 @@ class FileAssociationActivity :
}
private fun importBook(treeUri: Uri, uri: Uri) {
val treeDoc = DocumentFile.fromTreeUri(this, treeUri)
val bookDoc = DocumentFile.fromSingleUri(this, uri)
launch {
runCatching {
if (treeUri.isContentScheme()) {
val treeDoc = DocumentFile.fromTreeUri(this@FileAssociationActivity, treeUri)
val bookDoc = DocumentFile.fromSingleUri(this@FileAssociationActivity, uri)
withContext(IO) {
val name = bookDoc?.name!!
val doc = treeDoc!!.findFile(name)
@ -108,6 +111,24 @@ class FileAssociationActivity :
oStream.flush()
}
}
viewModel.importBook(nDoc.uri)
}
}
} else {
val treeFile = File(treeUri.path!!)
val bookDoc = DocumentFile.fromSingleUri(this@FileAssociationActivity, uri)
withContext(IO) {
val name = bookDoc?.name!!
val file = treeFile.getFile(name)
if (!file.exists() || file.lastModified() < bookDoc.lastModified()) {
FileOutputStream(file).use { oStream ->
contentResolver.openInputStream(bookDoc.uri)!!.use { iStream ->
iStream.copyTo(oStream)
oStream.flush()
}
}
}
viewModel.importBook(Uri.fromFile(file))
}
}
}.onFailure {