This commit is contained in:
kunfei 2023-05-02 21:26:43 +08:00
parent d909d136bb
commit 193cabb75b
2 changed files with 84 additions and 1 deletions

View File

@ -0,0 +1,83 @@
package io.legado.app
import android.app.DownloadManager
import android.net.Uri
import android.os.Environment
import android.webkit.WebSettings
import android.webkit.WebView
import io.legado.app.help.config.AppConfig
import io.legado.app.utils.runOnUI
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import org.junit.Test
import splitties.init.appCtx
import splitties.systemservices.downloadManager
class HttpTest {
@Test
fun test() {
webViewDownloadTest()
}
private fun webViewDownloadTest() {
runOnUI {
val webView = WebView(appCtx)
val settings = webView.settings
settings.javaScriptEnabled = true
settings.domStorageEnabled = true
settings.blockNetworkImage = true
settings.userAgentString = AppConfig.userAgent
settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
webView.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
print(url)
webView.destroy()
}
webView.loadUrl("https://gj.legado.cc/legado/?url=https://miaogongzi.lanzout.com/iITmP0s7y26d&type=down")
}
}
private fun downloadManagerTest() {
runBlocking {
val request =
DownloadManager.Request(Uri.parse("https://gj.legado.cc/legado/?url=https://miaogongzi.lanzout.com/iITmP0s7y26d&type=down"))
// 设置通知
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN)
// 设置下载文件保存的路径和文件名
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "test.txt")
// 添加一个下载任务
val downloadId = downloadManager.enqueue(request)
val query = DownloadManager.Query()
query.setFilterById(downloadId)
repeat(30) {
downloadManager.query(query).use { cursor ->
if (cursor.moveToFirst()) {
val progressIndex =
cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)
val fileSizeIndex =
cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)
val statusIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)
val progress = cursor.getInt(progressIndex)
val max = cursor.getInt(fileSizeIndex)
val status = when (cursor.getInt(statusIndex)) {
DownloadManager.STATUS_PAUSED -> appCtx.getString(R.string.pause)
DownloadManager.STATUS_PENDING -> appCtx.getString(R.string.wait_download)
DownloadManager.STATUS_RUNNING -> appCtx.getString(R.string.downloading)
DownloadManager.STATUS_SUCCESSFUL -> {
appCtx.getString(R.string.download_success)
}
DownloadManager.STATUS_FAILED -> appCtx.getString(R.string.download_error)
else -> appCtx.getString(R.string.unknown_state)
}
print(status)
delay(1000)
} else {
return@runBlocking
}
}
}
}
}
}

View File

@ -5,7 +5,7 @@ buildscript {
compile_sdk_version = 33
build_tool_version = '33.0.1'
kotlin_version = '1.8.21'
agp_version = '8.0.0'
agp_version = '8.0.1'
exoplayer_version = '2.18.6'
splitties_version = '3.0.0'
room_version = '2.5.1'