Commit def4fe73 authored by wanglei's avatar wanglei

...

parent 85c4a376
...@@ -26,12 +26,7 @@ ...@@ -26,12 +26,7 @@
android:theme="@style/Theme.BrowserWhite" android:theme="@style/Theme.BrowserWhite"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:targetApi="34"> tools:targetApi="34">
<activity
android:name=".ui.activity.download.WebDownloadManagerActivity"
android:exported="false" />
<activity
android:name=".ui.activity.download.WebDownloadGuideActivity"
android:exported="false" />
<activity <activity
android:name=".ui.activity.SplashActivity" android:name=".ui.activity.SplashActivity"
android:exported="true" android:exported="true"
...@@ -42,6 +37,18 @@ ...@@ -42,6 +37,18 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".ui.activity.download.WebDownloadManagerActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.download.WebDownloadGuideActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".ui.activity.news.NewsDetailActivity" android:name=".ui.activity.news.NewsDetailActivity"
android:exported="false" android:exported="false"
......
package com.base.browserwhite.bean package com.base.browserwhite.bean
data class DownloadBean(val path: String, val time: Long = 0) { data class DownloadBean(
val downloadId: Long=0,
val path: String="",
val time: String = ""
) {
var isTime: Boolean = false var isTime: Boolean = false
} }
\ No newline at end of file
package com.base.browserwhite.utils package com.base.browserwhite.help
import android.util.Base64 import android.util.Base64
import java.security.SecureRandom import java.security.SecureRandom
......
package com.base.browserwhite.utils package com.base.browserwhite.help
import com.base.browserwhite.BuildConfig import com.base.browserwhite.BuildConfig
import com.base.browserwhite.bean.NewsBean import com.base.browserwhite.bean.NewsBean
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.ConfigHelper
import com.base.browserwhite.utils.LogEx
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonParser import com.google.gson.JsonParser
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
......
package com.base.browserwhite.utils; package com.base.browserwhite.help;
import android.text.TextUtils; import android.text.TextUtils;
import com.base.browserwhite.utils.LogEx;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
......
...@@ -18,6 +18,7 @@ import com.base.browserwhite.ui.fragment.FileFragment ...@@ -18,6 +18,7 @@ import com.base.browserwhite.ui.fragment.FileFragment
import com.base.browserwhite.ui.fragment.HomeFragment import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.VideoDownloader
import java.io.File import java.io.File
class MainActivity : BaseActivity<ActivityMainBinding>() { class MainActivity : BaseActivity<ActivityMainBinding>() {
...@@ -63,7 +64,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -63,7 +64,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
} }
}) })
VideoDownloader.downloadVideo(this, "https://assets.mixkit.co/videos/4702/4702-720.mp4")
} }
......
package com.base.browserwhite.ui.activity.download
import com.base.browserwhite.databinding.FragmentDownloadGuideBinding
import com.base.browserwhite.ui.fragment.BaseFragment
class DownloadGuideFragment() : BaseFragment<FragmentDownloadGuideBinding>() {
private var index = 0
constructor(index: Int) : this() {
this.index = index
}
override val binding: FragmentDownloadGuideBinding by lazy {
FragmentDownloadGuideBinding.inflate(layoutInflater)
}
override fun setView() {
}
}
\ No newline at end of file
package com.base.browserwhite.ui.activity.download package com.base.browserwhite.ui.activity.download
import com.base.browserwhite.R import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.base.browserwhite.databinding.ActivityWebDownloadGuideBinding import com.base.browserwhite.databinding.ActivityWebDownloadGuideBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.BarUtils
class WebDownloadGuideActivity : BaseActivity<ActivityWebDownloadGuideBinding>() { class WebDownloadGuideActivity : BaseActivity<ActivityWebDownloadGuideBinding>() {
private val fragment1: DownloadGuideFragment by lazy {
DownloadGuideFragment(0)
}
private val fragment2: DownloadGuideFragment by lazy {
DownloadGuideFragment(1)
}
private val fragment3: DownloadGuideFragment by lazy {
DownloadGuideFragment(2)
}
private val fragment4: DownloadGuideFragment by lazy {
DownloadGuideFragment(3)
}
private var currentPosition: Int = 0
private val fragments by lazy {
mutableListOf(fragment1, fragment2, fragment3, fragment4)
}
override val binding: ActivityWebDownloadGuideBinding by lazy { override val binding: ActivityWebDownloadGuideBinding by lazy {
ActivityWebDownloadGuideBinding.inflate(layoutInflater) ActivityWebDownloadGuideBinding.inflate(layoutInflater)
} }
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.viewPager2.run {
adapter = object : FragmentStateAdapter(this@WebDownloadGuideActivity) {
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}
}
binding.viewPager2.registerOnPageChangeCallback(object :
ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
currentPosition = position
binding.ivBefore.isVisible = currentPosition > 0
binding.ivNext.isVisible = currentPosition < 3
}
})
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback { finishToMain() }
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
} }
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.download package com.base.browserwhite.ui.activity.download
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Environment
import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.browserwhite.R
import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.databinding.ActivityWebDownloadManagerBinding import com.base.browserwhite.databinding.ActivityWebDownloadManagerBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.adapter.DownloadAdapter import com.base.browserwhite.ui.adapter.DownloadAdapter
import com.base.browserwhite.ui.views.DialogViews.showGerPermission
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import java.io.File
class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBinding>() { class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBinding>() {
...@@ -22,6 +33,57 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin ...@@ -22,6 +33,57 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = DownloadAdapter() adapter = DownloadAdapter()
binding.rv.adapter = adapter
if (checkStorePermission()) {
initData()
} else {
showGerPermission(desc = "", deny = { finishToMain() }, allow = {
requestStorePermission(launcher, result = {
if (it) initData() else finishToMain()
})
})
}
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMain()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.tvHowUse.setOnClickListener {
startActivity(Intent(this, WebDownloadGuideActivity::class.java))
finish()
}
} }
private fun initData() {
val appName: String = resources.getString(R.string.app_name)
val dir = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), appName)
// dir.listFiles().isNullOrEmpty()
if (true) {
binding.llEmpty.isVisible = true
} else {
val fileList = arrayListOf<File>()
val timeList = arrayListOf<String>()
val beanList = arrayListOf<DownloadBean>()
fileList.addAll(dir.listFiles() ?: arrayOf())
fileList.sortBy { it.lastModified() }
fileList.forEach {
val time = it.lastModified().toFormatTime()
if (!timeList.contains(time)) {
timeList.add(time)
beanList.add(DownloadBean(time = time).apply { isTime = true })
} else {
beanList.add(DownloadBean(path = it.absolutePath))
}
}
adapter.submitList(beanList)
}
}
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ import com.base.browserwhite.ui.activity.BaseActivity ...@@ -11,7 +11,7 @@ import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.adapter.NewsAdapter import com.base.browserwhite.ui.adapter.NewsAdapter
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.NewsUtils import com.base.browserwhite.help.NewsUtils
import com.chad.library.adapter4.QuickAdapterHelper import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
......
...@@ -7,7 +7,7 @@ import androidx.fragment.app.FragmentTransaction ...@@ -7,7 +7,7 @@ import androidx.fragment.app.FragmentTransaction
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.databinding.ActivityNewsDetailBinding import com.base.browserwhite.databinding.ActivityNewsDetailBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.fragment.WebViewFragment import com.base.browserwhite.ui.activity.webbrowser.WebViewFragment
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
class NewsDetailActivity : BaseActivity<ActivityNewsDetailBinding>() { class NewsDetailActivity : BaseActivity<ActivityNewsDetailBinding>() {
......
...@@ -7,15 +7,12 @@ import androidx.activity.addCallback ...@@ -7,15 +7,12 @@ import androidx.activity.addCallback
import com.base.browserwhite.bean.ConstObject.JUNK_CLEANER import com.base.browserwhite.bean.ConstObject.JUNK_CLEANER
import com.base.browserwhite.databinding.ActivityResultBinding import com.base.browserwhite.databinding.ActivityResultBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.news.NewsActivity
import com.base.browserwhite.ui.activity.news.NewsDetailActivity import com.base.browserwhite.ui.activity.news.NewsDetailActivity
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import com.base.browserwhite.ui.adapter.NewsAdapter import com.base.browserwhite.ui.adapter.NewsAdapter
import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.KotlinExt.toFormatSize import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.NewsUtils import com.base.browserwhite.help.NewsUtils
import com.chad.library.adapter4.QuickAdapterHelper import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
......
...@@ -15,7 +15,6 @@ import com.base.browserwhite.bean.ConstObject.GOOGLE ...@@ -15,7 +15,6 @@ import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.databinding.ActivityWebBrowserBinding import com.base.browserwhite.databinding.ActivityWebBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.fragment.HomeFragment import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.ui.fragment.WebViewFragment
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
......
package com.base.browserwhite.ui.fragment package com.base.browserwhite.ui.activity.webbrowser
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.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
...@@ -19,6 +17,7 @@ import android.webkit.WebView ...@@ -19,6 +17,7 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.databinding.FragmentWebViewBinding import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
......
...@@ -25,11 +25,11 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV ...@@ -25,11 +25,11 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
val context = holder.itemView.context val context = holder.itemView.context
if (item.isTime) { if (item.isTime) {
val binding = ItemDownloadTimeBinding.bind(holder.itemView) val binding = ItemDownloadTimeBinding.bind(holder.itemView)
binding.tvTime.text = item.time.toFormatTime() binding.tvTime.text = item.time
} else { } else {
val binding = ItemDownloadBinding.bind(holder.itemView) val binding = ItemDownloadBinding.bind(holder.itemView)
val file = File(item.path) val file = File(item.path)
Glide.with(context).load(file.absoluteFile).into(binding.iv) Glide.with(context).load(file.absoluteFile).centerCrop().into(binding.iv)
binding.tvName.text = file.name binding.tvName.text = file.name
binding.tvSize.text = file.length().toFormatSize() binding.tvSize.text = file.length().toFormatSize()
} }
......
...@@ -7,10 +7,14 @@ import android.view.View ...@@ -7,10 +7,14 @@ import android.view.View
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.BuildConfig import com.base.browserwhite.BuildConfig
import com.base.browserwhite.bean.MediaBean import com.base.browserwhite.bean.MediaBean
import com.base.browserwhite.databinding.ActivityWebDownloadGuideBinding
import com.base.browserwhite.databinding.FragmentFileBinding import com.base.browserwhite.databinding.FragmentFileBinding
import com.base.browserwhite.ui.activity.MainActivity import com.base.browserwhite.ui.activity.MainActivity
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
import com.base.browserwhite.ui.activity.download.WebDownloadGuideActivity
import com.base.browserwhite.ui.activity.download.WebDownloadManagerActivity
import com.base.browserwhite.ui.activity.mediabrowser.MediaBrowserActivity import com.base.browserwhite.ui.activity.mediabrowser.MediaBrowserActivity
import com.base.browserwhite.ui.activity.webbrowser.WebBrowserActivity
import com.base.browserwhite.ui.adapter.MediaAdapter import com.base.browserwhite.ui.adapter.MediaAdapter
import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog
...@@ -124,6 +128,13 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -124,6 +128,13 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
putExtra("tittle", "Zip") putExtra("tittle", "Zip")
}) })
} }
binding.llDownload.setOnClickListener {
// requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply {
// putExtra("url", "https://mixkit.co/free-stock-video/girl-dancing-happily-in-a-field-of-flowers-4702/")
// })
startActivity(Intent(requireContext(), WebDownloadManagerActivity::class.java))
}
} }
......
...@@ -33,23 +33,14 @@ import com.base.browserwhite.ui.adapter.NewsAdapter ...@@ -33,23 +33,14 @@ import com.base.browserwhite.ui.adapter.NewsAdapter
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.AppPreferences import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.NewsUtils.requestNews import com.base.browserwhite.help.NewsUtils.requestNews
import com.chad.library.adapter4.QuickAdapterHelper import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
import okhttp3.Call
import okhttp3.Callback
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.net.MalformedURLException import java.net.MalformedURLException
import java.net.URL import java.net.URL
import java.net.URLEncoder import java.net.URLEncoder
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
import java.util.Locale
class HomeFragment : BaseFragment<FragmentHomeBinding>() { class HomeFragment : BaseFragment<FragmentHomeBinding>() {
......
...@@ -2,7 +2,8 @@ package com.base.browserwhite.utils ...@@ -2,7 +2,8 @@ package com.base.browserwhite.utils
import android.os.Build import android.os.Build
import com.base.browserwhite.BuildConfig import com.base.browserwhite.BuildConfig
import com.base.browserwhite.utils.ReportUtils.doPost import com.base.browserwhite.help.AESHelper
import com.base.browserwhite.help.ReportUtils.doPost
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
......
...@@ -9,7 +9,6 @@ import android.os.Build ...@@ -9,7 +9,6 @@ import android.os.Build
import android.os.Environment import android.os.Environment
import android.provider.Settings import android.provider.Settings
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
object PermissionHelp { object PermissionHelp {
......
package com.base.browserwhite.utils
import android.annotation.SuppressLint
import android.app.DownloadManager
import android.content.Context
import android.database.Cursor
import android.net.Uri
import android.os.Environment
import com.base.browserwhite.R
import java.io.File
object VideoDownloader {
//https://assets.mixkit.co/videos/4702/4702-720.mp4
fun downloadVideo(context: Context, uri: String): Pair<Long, File> {
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
val fileName = uri.split("/").last()
// 创建一个DownloadManager.Request对象
val request = DownloadManager.Request(Uri.parse(uri))
// 设置下载的标题和描述
request.setTitle(fileName)
request.setDescription("Downloading $fileName")
// 设置通知栏的可见性
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
// 设置下载的文件类型
request.setMimeType("video/mp4")
// 设置下载文件的存储位置
val subPath = context.resources.getString(R.string.app_name) + "/$fileName"
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subPath)
// 设置是否允许漫游
request.setAllowedOverRoaming(false)
// 将下载请求加入下载队列
val downloadId = downloadManager.enqueue(request)
val filePath = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), subPath)
return Pair(downloadId, filePath)
}
fun queryDownloadProgress(
context: Context,
downloadId: Long,
uiAction: (progress: Int) -> Uri,
noRunningAction: (status: Int) -> Uri
) {
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
// 创建查询对象
val query = DownloadManager.Query().setFilterById(downloadId)
// 执行查询
val cursor = downloadManager.query(query)
// 检查游标是否有数据
if (cursor != null && cursor.moveToFirst()) {
// 获取下载的状态
val columnIndexStatus = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)
val status = cursor.getInt(columnIndexStatus)
// 检查下载是否还在进行中
if (status == DownloadManager.STATUS_RUNNING) {
// 获取下载的进度
val columnIndexBytesDownloadedSoFar = cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)
val bytesDownloadedSoFar = cursor.getLong(columnIndexBytesDownloadedSoFar)
val columnIndexTotalSizeBytes = cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)
val totalSizeBytes = cursor.getLong(columnIndexTotalSizeBytes)
// 计算下载的百分比
val progress = (100 * bytesDownloadedSoFar.toFloat() / totalSizeBytes.toFloat()).toInt()
// 在这里处理进度更新,例如更新UI
uiAction.invoke(progress)
} else {
// 处理下载完成或出错的情况
noRunningAction.invoke(status)
when (status) {
DownloadManager.STATUS_PAUSED -> {
println("Download paused")
}
DownloadManager.STATUS_FAILED -> {
println("Download failed")
}
DownloadManager.STATUS_SUCCESSFUL -> {
println("Download successful")
}
}
}
// 关闭游标
cursor.close()
}
}
@SuppressLint("Range")
fun queryDownloadFilePath(context: Context, downloadId: Long): String {
var filePath: String = ""
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
runCatching {
val query = DownloadManager.Query().setFilterById(downloadId)
val cursor: Cursor = downloadManager.query(query)
if (cursor.moveToFirst()) {
val status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))
if (status == DownloadManager.STATUS_SUCCESSFUL) {
//下载文件的本地路径
filePath = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME))
}
}
cursor.close()
}
return filePath
}
}
\ No newline at end of file
...@@ -5,6 +5,80 @@ ...@@ -5,6 +5,80 @@
android:id="@+id/main" android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#4688C5"
tools:context=".ui.activity.download.WebDownloadGuideActivity"> tools:context=".ui.activity.download.WebDownloadGuideActivity">
<FrameLayout
android:id="@+id/fl_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginVertical="10dp"
android:layout_marginStart="10dp"
tools:ignore="UselessParent">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/w_fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="How to download videos"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/iv_before"
app:layout_constraintTop_toBottomOf="@id/fl_top" />
<ImageView
android:id="@+id/iv_before"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginBottom="45dp"
android:src="@mipmap/shangyibu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:layout_marginBottom="45dp"
android:src="@mipmap/xiayibu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -61,6 +61,13 @@ ...@@ -61,6 +61,13 @@
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_download" />
<LinearLayout <LinearLayout
android:id="@+id/ll_empty" android:id="@+id/ll_empty"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -92,6 +99,8 @@ ...@@ -92,6 +99,8 @@
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="22dp" android:layout_marginTop="22dp"
android:background="@drawable/bg_0571ed_25" android:background="@drawable/bg_0571ed_25"
android:clickable="true"
android:focusable="true"
android:gravity="center" android:gravity="center"
android:text="How to download videos" android:text="How to download videos"
android:textColor="@color/white" android:textColor="@color/white"
...@@ -99,14 +108,6 @@ ...@@ -99,14 +108,6 @@
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_download" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4688C5"
tools:context=".ui.activity.download.WebDownloadGuideActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/tu1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.35" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -248,13 +248,13 @@ ...@@ -248,13 +248,13 @@
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<LinearLayout <LinearLayout
android:id="@+id/ll_download"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="70dp" android:layout_height="70dp"
android:layout_margin="16dp" android:layout_margin="16dp"
android:background="@drawable/bg_storke_dee9f4" android:background="@drawable/bg_storke_dee9f4"
android:elevation="0dp" android:elevation="0dp"
android:orientation="horizontal" android:orientation="horizontal">
android:visibility="gone">
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -305,7 +305,6 @@ ...@@ -305,7 +305,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="165dp" android:layout_height="165dp"
android:layout_marginHorizontal="16dp" android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:background="@drawable/bg_storke_dee9f4" android:background="@drawable/bg_storke_dee9f4"
android:orientation="vertical"> android:orientation="vertical">
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
tools:context=".ui.fragment.WebViewFragment"> tools:context=".ui.activity.webbrowser.WebViewFragment">
<ProgressBar <ProgressBar
android:id="@+id/progress_bar" android:id="@+id/progress_bar"
......
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