Commit 85c4a376 authored by wanglei's avatar wanglei

...

parent 33fe6213
......@@ -279,6 +279,7 @@ class ScanQRCActivity : BaseActivity<ActivityScanQrcBinding>() {
startActivity(Intent(this@ScanQRCActivity, WebBrowserActivity::class.java).apply {
putExtra("url", qrCodeValue)
})
finish()
}
}
}
......
......@@ -3,7 +3,8 @@ package com.base.browserwhite.ui.fragment
import android.annotation.SuppressLint
import android.net.Uri
import android.net.http.SslError
import android.os.Build
import android.os.Handler
import android.os.Looper
import android.view.View
import android.webkit.CookieManager
import android.webkit.JsResult
......@@ -22,6 +23,7 @@ import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.json.JSONArray
import kotlin.random.Random
......@@ -48,6 +50,13 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
binding.tvReload.setOnClickListener {
reloadWebView()
}
binding.webView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
if (scrollY == 0) {
binding.refreshLayout.setEnabled(true)
} else {
binding.refreshLayout.setEnabled(false)
}
}
binding.refreshLayout.setOnRefreshListener {
lifecycleScope.launch {
binding.refreshLayout.isRefreshing = true
......@@ -113,10 +122,14 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
binding.webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView, newProgress: Int) {
LogEx.logDebug(TAG, "onProgressChanged newProgress=$newProgress")
binding.progressBar.progress = newProgress + 15
if (binding.progressBar.progress >= 100) {
binding.progressBar.visibility = View.GONE
}
if (newProgress == 100) {
parseVideoLink(view)
}
}
override fun onReceivedTitle(view: WebView?, title: String?) {
......@@ -152,6 +165,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
super.onPageFinished(view, url)
onPageFinished?.invoke(url)
job?.cancel()
}
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
......@@ -206,6 +220,37 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
}
var isParsing: Boolean = false
fun parseVideoLink(view: WebView) {
if (isParsing) return
isParsing = true
view.evaluateJavascript("(function() {" +
"var videos = document.querySelectorAll('video');" +
"var videoSources = [];" +
"for (var i = 0; i < videos.length; i++) {" +
"var video = videos[i];" +
"var src = video.src;" +
"videoSources.push(src);" +
"}" +
"return videoSources;" +
"}).call(this);", ValueCallback<String?> { value -> // 这里处理获取到的视频链接数组
LogEx.logDebug(TAG, "value=$value")
// 将字符串转换为JSON数组,然后处理
val jsonArray = JSONArray(value)
if (jsonArray.length() != 0) {
binding.flDownload.visibility = View.VISIBLE
binding.tvDownloadNumber.text = jsonArray.length().toString()
}
for (i in 0 until jsonArray.length()) {
val videoUrl = jsonArray.optString(i)
LogEx.logDebug(TAG, videoUrl)
}
isParsing = false
})
}
fun canGoBack(): Boolean {
return binding.webView.canGoBack()
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FF3430" />
</shape>
\ No newline at end of file
......@@ -17,14 +17,52 @@
tools:progress="50" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/fl_download"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="end|bottom"
android:layout_marginEnd="18dp"
android:layout_marginBottom="50dp"
android:visibility="gone">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/xiazhai"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_download_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|top"
android:background="@drawable/bg_ff3434_oval"
android:gravity="center"
android:includeFontPadding="false"
android:minWidth="20dp"
android:minHeight="20dp"
android:padding="2dp"
android:textColor="@color/white"
android:textSize="12sp"
tools:text="1" />
</FrameLayout>
</FrameLayout>
<LinearLayout
android:id="@+id/ll_error"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment