Commit 85c4a376 authored by wanglei's avatar wanglei

...

parent 33fe6213
...@@ -279,6 +279,7 @@ class ScanQRCActivity : BaseActivity<ActivityScanQrcBinding>() { ...@@ -279,6 +279,7 @@ class ScanQRCActivity : BaseActivity<ActivityScanQrcBinding>() {
startActivity(Intent(this@ScanQRCActivity, WebBrowserActivity::class.java).apply { startActivity(Intent(this@ScanQRCActivity, WebBrowserActivity::class.java).apply {
putExtra("url", qrCodeValue) putExtra("url", qrCodeValue)
}) })
finish()
} }
} }
} }
......
...@@ -3,7 +3,8 @@ package com.base.browserwhite.ui.fragment ...@@ -3,7 +3,8 @@ package com.base.browserwhite.ui.fragment
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.net.Uri import android.net.Uri
import android.net.http.SslError import android.net.http.SslError
import android.os.Build import android.os.Handler
import android.os.Looper
import android.view.View import android.view.View
import android.webkit.CookieManager import android.webkit.CookieManager
import android.webkit.JsResult import android.webkit.JsResult
...@@ -22,6 +23,7 @@ import com.base.browserwhite.utils.LogEx ...@@ -22,6 +23,7 @@ import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.json.JSONArray
import kotlin.random.Random import kotlin.random.Random
...@@ -48,6 +50,13 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -48,6 +50,13 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
binding.tvReload.setOnClickListener { binding.tvReload.setOnClickListener {
reloadWebView() reloadWebView()
} }
binding.webView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
if (scrollY == 0) {
binding.refreshLayout.setEnabled(true)
} else {
binding.refreshLayout.setEnabled(false)
}
}
binding.refreshLayout.setOnRefreshListener { binding.refreshLayout.setOnRefreshListener {
lifecycleScope.launch { lifecycleScope.launch {
binding.refreshLayout.isRefreshing = true binding.refreshLayout.isRefreshing = true
...@@ -113,10 +122,14 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -113,10 +122,14 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
binding.webView.webChromeClient = object : WebChromeClient() { binding.webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView, newProgress: Int) { override fun onProgressChanged(view: WebView, newProgress: Int) {
LogEx.logDebug(TAG, "onProgressChanged newProgress=$newProgress") LogEx.logDebug(TAG, "onProgressChanged newProgress=$newProgress")
binding.progressBar.progress = newProgress + 15 binding.progressBar.progress = newProgress + 15
if (binding.progressBar.progress >= 100) { if (binding.progressBar.progress >= 100) {
binding.progressBar.visibility = View.GONE binding.progressBar.visibility = View.GONE
} }
if (newProgress == 100) {
parseVideoLink(view)
}
} }
override fun onReceivedTitle(view: WebView?, title: String?) { override fun onReceivedTitle(view: WebView?, title: String?) {
...@@ -152,6 +165,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -152,6 +165,7 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
super.onPageFinished(view, url) super.onPageFinished(view, url)
onPageFinished?.invoke(url) onPageFinished?.invoke(url)
job?.cancel() job?.cancel()
} }
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) { override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
...@@ -206,6 +220,37 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -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 { fun canGoBack(): Boolean {
return binding.webView.canGoBack() 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,8 +17,12 @@ ...@@ -17,8 +17,12 @@
tools:progress="50" /> tools:progress="50" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:id="@+id/refresh_layout" android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<WebView <WebView
...@@ -26,6 +30,40 @@ ...@@ -26,6 +30,40 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="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 <LinearLayout
android:id="@+id/ll_error" android:id="@+id/ll_error"
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
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