|
|
@@ -7,7 +7,9 @@ import androidx.lifecycle.MutableLiveData
|
|
|
import io.legado.app.constant.AppLog
|
|
|
import io.legado.app.constant.AppPattern.bookFileRegex
|
|
|
import io.legado.app.exception.NoStackTraceException
|
|
|
+import io.legado.app.help.IntentData
|
|
|
import io.legado.app.model.localBook.LocalBook
|
|
|
+import io.legado.app.utils.inputStream
|
|
|
import io.legado.app.utils.isJson
|
|
|
import io.legado.app.utils.printOnDebug
|
|
|
import java.io.File
|
|
|
@@ -23,24 +25,19 @@ class FileAssociationViewModel(application: Application) : BaseAssociationViewMo
|
|
|
fun dispatchIndent(uri: Uri) {
|
|
|
execute {
|
|
|
lateinit var fileName: String
|
|
|
- lateinit var content: String
|
|
|
- lateinit var fileStream: InputStream
|
|
|
//如果是普通的url,需要根据返回的内容判断是什么
|
|
|
if (uri.scheme == "file" || uri.scheme == "content") {
|
|
|
- if (uri.scheme == "file") {
|
|
|
+ fileName = if (uri.scheme == "file") {
|
|
|
val file = File(uri.path.toString())
|
|
|
- fileStream = file.inputStream()
|
|
|
- fileName = file.name
|
|
|
+ file.name
|
|
|
} else {
|
|
|
val file = DocumentFile.fromSingleUri(context, uri)
|
|
|
if (file?.exists() != true) throw NoStackTraceException("文件不存在")
|
|
|
- fileStream = context.contentResolver.openInputStream(uri)!!
|
|
|
- fileName = file.name ?: ""
|
|
|
+ file.name ?: ""
|
|
|
}
|
|
|
kotlin.runCatching {
|
|
|
- content = fileStream.reader(Charsets.UTF_8).use { it.readText() }
|
|
|
- if (content.isJson()) {
|
|
|
- importJson(content)
|
|
|
+ if (uri.inputStream(context).isJson()) {
|
|
|
+ importJson(uri)
|
|
|
return@execute
|
|
|
}
|
|
|
}.onFailure {
|
|
|
@@ -58,6 +55,7 @@ class FileAssociationViewModel(application: Application) : BaseAssociationViewMo
|
|
|
}.onError {
|
|
|
it.printOnDebug()
|
|
|
errorLive.postValue(it.localizedMessage)
|
|
|
+ AppLog.put("无法打开文件\n${it.localizedMessage}", it)
|
|
|
}
|
|
|
}
|
|
|
|