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"> + + + +