From 845a56d44361ee82de9643c7fe9a6e6dc844020f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?=
<41315874+fumiama@users.noreply.github.com>
Date: Fri, 17 Jun 2022 22:23:59 +0800
Subject: [PATCH] =?UTF-8?q?1.4.3=20=E4=BF=AE=E5=A4=8D=201.=20=E6=BC=AB?=
=?UTF-8?q?=E7=94=BB=E7=BC=BA=E9=A1=B5=202.=20=E6=BC=AB=E7=94=BB=E4=B8=8B?=
=?UTF-8?q?=E8=BD=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/misc.xml | 1 +
.../fumiama/copymanga/activity/DlActivity.kt | 14 ++++++++++---
.../copymanga/activity/MainActivity.kt | 9 ++++----
.../fumiama/copymanga/tool/MangaDlTools.kt | 21 ++++++++-----------
.../fumiama/copymanga/web/WebViewClient.kt | 13 +++++++++---
app/src/main/res/layout/activity_dl.xml | 10 +++++++++
app/src/main/res/layout/activity_main.xml | 5 +++++
7 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8946ecd..6957712 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -6,6 +6,7 @@
+
diff --git a/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt b/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt
index 3301a6d..f9b9b4e 100644
--- a/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/activity/DlActivity.kt
@@ -28,6 +28,8 @@ import top.fumiama.copymanga.tool.MangaDlTools.Companion.wmdlt
import top.fumiama.copymanga.tool.ToolsBox
import top.fumiama.copymanga.view.ChapterToggleButton
import top.fumiama.copymanga.view.LazyScrollView
+import top.fumiama.copymanga.web.JSHidden
+import top.fumiama.copymanga.web.WebChromeClient
import java.io.File
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
@@ -57,6 +59,10 @@ class DlActivity : Activity() {
setContentView(binding.root)
mh?.saveUrlsOnly = true
mangaDlTools = MangaDlTools(this)
+ dwh.settings.userAgentString = getString(R.string.pc_ua)
+ dwh.webChromeClient = WebChromeClient()
+ dwh.setWebViewClient("h.js")
+ dwh.loadJSInterface(JSHidden())
handler.sendEmptyMessage(-2) //setLayouts
}
@@ -133,9 +139,11 @@ class DlActivity : Activity() {
haveDlStarted = true
canDl = true
handler.sendEmptyMessage(9) //set dl card color to red
- Toast.makeText(this, "十秒后开始下载...", Toast.LENGTH_SHORT).show()
- fillChapters()
- Thread { dlThread { downloadChapterPages(it) } }.start()
+ Toast.makeText(this, "请耐心等待加载...", Toast.LENGTH_SHORT).show()
+ Thread {
+ fillChapters()
+ dlThread { downloadChapterPages(it) }
+ }.start()
}
}
}
diff --git a/app/src/main/java/top/fumiama/copymanga/activity/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/activity/MainActivity.kt
index 88af6bf..3f44c9c 100644
--- a/app/src/main/java/top/fumiama/copymanga/activity/MainActivity.kt
+++ b/app/src/main/java/top/fumiama/copymanga/activity/MainActivity.kt
@@ -22,7 +22,6 @@ import top.fumiama.copymanga.web.WebChromeClient
import java.lang.ref.WeakReference
class MainActivity: Activity() {
- var wh: JSWebView? = null
var uploadMessageAboveL: ValueCallback>? = null
private var toolsBox: ToolsBox? = null
@SuppressLint("JavascriptInterface")
@@ -44,10 +43,10 @@ class MainActivity: Activity() {
w.loadJSInterface(JS())
w.loadUrl(getString(R.string.web_home))
- wh = JSWebView(this, getString(R.string.pc_ua))
- wh?.webChromeClient = WebChromeClient()
- wh?.setWebViewClient("h.js")
- wh?.loadJSInterface(JSHidden())
+ wh.settings.userAgentString = getString(R.string.pc_ua)
+ wh.webChromeClient = WebChromeClient()
+ wh.setWebViewClient("h.js")
+ wh.loadJSInterface(JSHidden())
}
}
SetDraggable().with(this).onto(fab)
diff --git a/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt b/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt
index 89993b6..1d3b26d 100644
--- a/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt
+++ b/app/src/main/java/top/fumiama/copymanga/tool/MangaDlTools.kt
@@ -2,12 +2,11 @@ package top.fumiama.copymanga.tool
import top.fumiama.copymanga.R
import top.fumiama.copymanga.activity.DlActivity
-import top.fumiama.copymanga.data.ComicStructure
-import top.fumiama.copymanga.view.JSWebView
-import top.fumiama.copymanga.web.JSHidden
+import kotlinx.android.synthetic.main.activity_dl.*
import java.io.File
import java.lang.Thread.sleep
import java.lang.ref.WeakReference
+import java.util.concurrent.Semaphore
import java.util.zip.CRC32
import java.util.zip.CheckedOutputStream
import java.util.zip.ZipEntry
@@ -15,18 +14,12 @@ import java.util.zip.ZipOutputStream
class MangaDlTools(activity: DlActivity) {
var exit = false
+ private val sem = Semaphore(1)
private val da = WeakReference(activity)
private val d = da.get()
private val p = PropertiesTools(File("${d?.filesDir}/chapters.hash"))
private var imgUrlsList: Array?>? = null
private var chaptersCount = 0
- private val newWebViewHidden: JSWebView?
- get() {
- val re = d?.let { JSWebView(it, it.getString(R.string.pc_ua)) }
- re?.setWebViewClient("h.js")
- re?.loadJSInterface(JSHidden())
- return re
- }
init {
wmdlt = WeakReference(this)
@@ -42,12 +35,16 @@ class MangaDlTools(activity: DlActivity) {
}
fun dlChapterUrl(url: String){
- p[url.substringAfterLast("/")] = (chaptersCount++).toString()
- newWebViewHidden?.loadUrl(url)
+ sem.acquire()
+ da.get()?.apply {
+ p[url.substringAfterLast("/")] = (chaptersCount++).toString()
+ runOnUiThread { dwh.loadUrl(url) }
+ }
}
fun setChapterImgs(hash: String, imgUrls: Array){
imgUrlsList?.set(p[hash].toInt(), imgUrls)
+ sem.release()
}
fun dlChapterAndPackIntoZip(zipf: File, hash: String){
diff --git a/app/src/main/java/top/fumiama/copymanga/web/WebViewClient.kt b/app/src/main/java/top/fumiama/copymanga/web/WebViewClient.kt
index e7081f0..b3887a6 100644
--- a/app/src/main/java/top/fumiama/copymanga/web/WebViewClient.kt
+++ b/app/src/main/java/top/fumiama/copymanga/web/WebViewClient.kt
@@ -8,6 +8,8 @@ import android.webkit.*
import android.webkit.WebViewClient
import android.widget.Toast
import top.fumiama.copymanga.R
+import top.fumiama.copymanga.activity.MainActivity.Companion.mh
+import top.fumiama.copymanga.activity.MainActivity.Companion.wm
class WebViewClient(private val context: Context, jsFileName: String):WebViewClient() {
private val js = context.assets.open(jsFileName).readBytes().decodeToString()
@@ -23,9 +25,14 @@ class WebViewClient(private val context: Context, jsFileName: String):WebViewCli
}
override fun onPageFinished(view: WebView?, url: String?) {
- view?.loadUrl(js)
- Log.d("MyWC", "Inject JS into: $url")
- super.onPageFinished(view, url)
+ Thread {
+ Thread.sleep(500)
+ wm?.get()?.runOnUiThread {
+ view?.loadUrl(js)
+ Log.d("MyWC", "Inject JS into: $url")
+ super.onPageFinished(view, url)
+ }
+ }.start()
}
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
diff --git a/app/src/main/res/layout/activity_dl.xml b/app/src/main/res/layout/activity_dl.xml
index 77af730..b8d1df3 100644
--- a/app/src/main/res/layout/activity_dl.xml
+++ b/app/src/main/res/layout/activity_dl.xml
@@ -5,6 +5,16 @@
android:layout_height="match_parent"
android:background="#FCFCFF">
+
+
+
+