Merge branch 'master' of https://github.com/gedoor/legado
# Conflicts: # app/src/main/res/values/colors.xmlpull/169/head
commit
78573d8e77
@ -0,0 +1,39 @@ |
|||||||
|
package io.legado.app.ui.config |
||||||
|
|
||||||
|
import android.content.Intent |
||||||
|
import android.os.Bundle |
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.base.VMBaseActivity |
||||||
|
import io.legado.app.ui.main.MainActivity |
||||||
|
import io.legado.app.utils.getViewModel |
||||||
|
|
||||||
|
|
||||||
|
class FileAssociationActivity : |
||||||
|
VMBaseActivity<FileAssociationViewModel>(R.layout.activity_file_association) { |
||||||
|
override val viewModel: FileAssociationViewModel |
||||||
|
get() = getViewModel(FileAssociationViewModel::class.java) |
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) { |
||||||
|
intent.data?.let { data -> |
||||||
|
val newIntent = viewModel.dispatchIndent(data) |
||||||
|
if (newIntent != null) { |
||||||
|
this.startActivityForResult(newIntent, 100) |
||||||
|
} else { |
||||||
|
gotoMainActivity() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { |
||||||
|
super.onActivityResult(requestCode, resultCode, data) |
||||||
|
|
||||||
|
//返回后直接跳转到主页面 |
||||||
|
gotoMainActivity() |
||||||
|
} |
||||||
|
|
||||||
|
private fun gotoMainActivity() { |
||||||
|
val mIntent = Intent() |
||||||
|
mIntent.setClass(this, MainActivity::class.java) |
||||||
|
startActivity(mIntent) |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
package io.legado.app.ui.config |
||||||
|
|
||||||
|
import android.app.Application |
||||||
|
import android.content.Intent |
||||||
|
import android.net.Uri |
||||||
|
import android.text.TextUtils |
||||||
|
import androidx.documentfile.provider.DocumentFile |
||||||
|
import io.legado.app.base.BaseViewModel |
||||||
|
import io.legado.app.model.localBook.LocalBook |
||||||
|
import io.legado.app.utils.isJsonArray |
||||||
|
import io.legado.app.utils.isJsonObject |
||||||
|
import io.legado.app.utils.readText |
||||||
|
import java.io.File |
||||||
|
|
||||||
|
class FileAssociationViewModel(application: Application) : BaseViewModel(application) { |
||||||
|
fun dispatchIndent(uri: Uri): Intent? { |
||||||
|
val url: String |
||||||
|
//如果是普通的url,需要根据返回的内容判断是什么 |
||||||
|
if (uri.scheme == "file" || uri.scheme == "content") { |
||||||
|
val content = if (uri.scheme == "file") { |
||||||
|
val file = File(uri.path.toString()) |
||||||
|
if (file.exists()) { |
||||||
|
file.readText() |
||||||
|
} else { |
||||||
|
null |
||||||
|
} |
||||||
|
} else { |
||||||
|
DocumentFile.fromSingleUri(context, uri)?.readText(context) |
||||||
|
} |
||||||
|
var scheme = "" |
||||||
|
if (content != null) { |
||||||
|
if (content.isJsonObject() || content.isJsonArray()) { |
||||||
|
//暂时根据文件内容判断属于什么 |
||||||
|
when { |
||||||
|
content.contains("bookSourceUrl") -> { |
||||||
|
scheme = "booksource" |
||||||
|
} |
||||||
|
content.contains("sourceUrl") -> { |
||||||
|
scheme = "rsssource" |
||||||
|
} |
||||||
|
content.contains("pattern") -> { |
||||||
|
scheme = "replace" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
if (TextUtils.isEmpty(scheme)) { |
||||||
|
execute { |
||||||
|
LocalBook.importFile(uri.path.toString()) |
||||||
|
toast("添加本地文件成功${uri.path}") |
||||||
|
} |
||||||
|
return null |
||||||
|
} |
||||||
|
} else { |
||||||
|
toast("文件不存在") |
||||||
|
return null |
||||||
|
} |
||||||
|
|
||||||
|
url = "yuedu://${scheme}/importonline?src=${uri.path}" |
||||||
|
} else if (uri.scheme == "yuedu") { |
||||||
|
url = uri.toString() |
||||||
|
} else { |
||||||
|
url = "yuedu://booksource/importonline?src=${uri.path}" |
||||||
|
} |
||||||
|
val data = Uri.parse(url) |
||||||
|
val newIndent = Intent(Intent.ACTION_VIEW) |
||||||
|
newIndent.data = data |
||||||
|
return newIndent |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="match_parent" |
||||||
|
tools:context="io.legado.app.ui.config.FileAssociationActivity"> |
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout> |
Loading…
Reference in new issue