Commit 608a7872 authored by wanglei's avatar wanglei

。。。

parent ad8d78f1
......@@ -25,7 +25,7 @@ object AdmobMaxHelper {
var isBlack: Boolean = false
var isInterOpenShowing: Boolean = false
fun testIntervalAd(activity: Activity) {
fun showIntervalAd(activity: Activity, callBack: () -> Unit) {
val time = intervalAdTime()
val flag = System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000
LogEx.logDebug(TAG, "testIntervalAd time=$time flag=$flag")
......@@ -35,8 +35,10 @@ object AdmobMaxHelper {
if (it) {
lastShowInter = System.currentTimeMillis()
}
callBack.invoke()
}
} else {
callBack.invoke()
}
}
......
......@@ -86,29 +86,16 @@ class BookmarkActivity : BaseActivity<ActivityBookmarkBinding>() {
super.initListener()
onBackPressedDispatcher.addCallback {
if (currentTab == BOOKMARK_TAB) {
if (bookmarkFragment.bookmarkAdapter.canBeforeFolder()) {
bookmarkFragment.bookmarkAdapter.beforeFolder()
} else {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@BookmarkActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finish()
}
} else {
AdmobMaxHelper.showIntervalAd(this@BookmarkActivity){
finish()
}
}
} else {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@BookmarkActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finish()
}
} else {
AdmobMaxHelper.showIntervalAd(this@BookmarkActivity){
finish()
}
}
......
package com.base.browserwhite.ui.activity.download
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.browserwhite.R
import com.base.browserwhite.ads.AdmobMaxHelper
import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.databinding.ItemDownloadBinding
import com.base.browserwhite.databinding.ItemDownloadCardBinding
import com.base.browserwhite.databinding.ItemDownloadTimeBinding
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadConfirmDialog
import com.base.browserwhite.utils.DownloadUtils.getDownloadPath
import com.base.browserwhite.utils.DownloadUtils.saveDownloadRecordFile
import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.LogEx
......@@ -27,13 +30,14 @@ import kotlin.math.abs
@Suppress("ControlFlowWithEmptyBody")
class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadViewHolder>() {
class DownloadAdapter(
val activity: Activity
) : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadViewHolder>() {
private val TAG = "DownloadAdapter"
inner class DownloadViewHolder(view: View) : ViewHolder(view)
var beginProgressAction: (() -> Unit)? = null//开始下载时调用,每个下载调用一次后设置为null
var downloadAction: (() -> Unit)? = null//下载按钮
var downloadFinishAction: ((id: Int) -> Unit)? = null//下载完成
......@@ -90,7 +94,11 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
if (payloads.isNullOrEmpty()) {
Glide.with(context).load(item.url).centerCrop().into(binding.iv)
binding.tvName.text = item.name
binding.tvSize.text = item.size.toFormatSize()
if (item.size != -1L) {
binding.tvSize.text = item.size.toFormatSize()
} else {
binding.tvSize.text = ""
}
when (item.status) {
FileDownloadStatus.completed -> {
binding.flMore.visibility = View.VISIBLE
......@@ -156,7 +164,11 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
if (payloads.isNullOrEmpty()) {
Glide.with(context).load(item.url).centerCrop().into(binding.iv)
binding.tvName.text = item.name.ifEmpty { item.url.split("/").last() }
binding.tvSize.text = item.size.toFormatSize()
if (item.size != -1L) {
binding.tvSize.text = item.size.toFormatSize()
} else {
binding.tvSize.text = ""
}
var status = item.status
// LogEx.logDebug(TAG, "status=${item.status} path=${item.path} progress=${item.progress}")
......@@ -192,8 +204,11 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
binding.ivDownload.setOnClickListener {
downloadAction?.invoke()
context.showDownloadConfirmDialog(item) {
downloadItem(context, item, position)
AdmobMaxHelper.showIntervalAd(activity) {
context.showDownloadConfirmDialog(item) {
downloadItem(context, item, position)
}
}
}
binding.flDownload.setOnClickListener {
......@@ -272,7 +287,7 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
item.path = context.getDownloadPath(item)
LogEx.logDebug(TAG, "downloadItem ${item.path}")
item.fileDownloadListener = createNewLister(item, "downloadItem", position)
item.fileDownloadListener = createNewLister(context, item, "downloadItem", position)
val downloadTask = FileDownloader.getImpl().create(item.url)
.setPath(item.path)
......@@ -284,13 +299,19 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
private fun replaceListener(item: DownloadBean, position: Int) {
if (item.fileDownloadListener == null) {
item.fileDownloadListener = createNewLister(item, "replaceListener", position)
item.fileDownloadListener = createNewLister(context, item, "replaceListener", position)
FileDownloader.getImpl().replaceListener(item.downloadId, item.fileDownloadListener)
}
}
private fun createNewLister(item: DownloadBean, tag: String = "", position: Int): FileDownloadListener {
var startMap = HashMap<String, Boolean>()
private fun createNewLister(
context: Context,
item: DownloadBean,
tag: String = "",
position: Int
): FileDownloadListener {
return object : FileDownloadListener() {
override fun pending(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
LogEx.logDebug(TAG, "pending tag=$tag item=${item.downloadId} ${task?.id} ${item.url}")
......@@ -303,8 +324,12 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
item.status = FileDownloader.getImpl().getStatus(item.url, item.path)
LogEx.logDebug(TAG, "progress tag=$tag item=${item.downloadId} percent=$percent ${item.path} state=${task?.status}")
notifyItemChanged(position, "aaa")
beginProgressAction?.invoke()
beginProgressAction = null
val start = startMap[item.url]
if (start == null || start != true) {
startMap[item.url] = true
context.saveDownloadRecordFile(items, "progress start ${item.url}")
}
}
override fun completed(task: BaseDownloadTask?) {
......@@ -313,7 +338,10 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
item.time = System.currentTimeMillis()
LogEx.logDebug(TAG, "completed tag=$tag item=${item.downloadId} ${item.path} ${item.status}")
notifyItemChanged(position, "aaa")
task?.let { downloadFinishAction?.invoke(it.id) }
task?.let {
downloadFinishAction?.invoke(it.id)
context.saveDownloadRecordFile(items, "completed")
}
}
override fun paused(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
......@@ -323,6 +351,7 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
item.status = FileDownloadStatus.paused
item.time = System.currentTimeMillis()
notifyItemChanged(position, "aaa")
context.saveDownloadRecordFile(items, "paused")
}
override fun error(task: BaseDownloadTask?, e: Throwable?) {
......
......@@ -16,7 +16,6 @@ import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
import com.base.browserwhite.utils.DownloadUtils.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadUtils.saveDownloadRecordFile
import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.PermissionUtils.checkStorePermission
......@@ -39,7 +38,7 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = DownloadAdapter()
adapter = DownloadAdapter(this)
adapter.moreAction = { archView, item ->
showMediaMoreDialog(archView,
deleteAction = {
......@@ -165,12 +164,4 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin
}
override fun onPause() {
super.onPause()
this.saveDownloadRecordFile(adapter.items)
}
override fun onDestroy() {
super.onDestroy()
}
}
\ No newline at end of file
......@@ -89,14 +89,7 @@ class NewsActivity : BaseActivity<ActivityNewsBinding>() {
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@NewsActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finishToMain()
}
} else {
AdmobMaxHelper.showIntervalAd(this@NewsActivity) {
finishToMain()
}
}
......
......@@ -200,17 +200,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
"WevStoreActivity" -> {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(
this@WebBrowserActivity,
false
) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finishToMain()
}
} else {
AdmobMaxHelper.showIntervalAd(this@WebBrowserActivity) {
finishToMain()
}
......@@ -230,14 +220,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
}
}
binding.ivHome.setOnClickListener {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@WebBrowserActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finishToMain()
}
} else {
AdmobMaxHelper.showIntervalAd(this) {
finishToMain()
}
}
......
......@@ -4,6 +4,7 @@ import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.net.http.SslError
import android.text.Html
......@@ -47,7 +48,6 @@ import com.base.browserwhite.utils.ColorUtils
import com.base.browserwhite.utils.DownloadUtils
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
import com.base.browserwhite.utils.DownloadUtils.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadUtils.saveDownloadRecordFile
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.PermissionUtils.checkStorePermission
import com.base.browserwhite.utils.SpBeanUtils
......@@ -161,7 +161,6 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
downloadDialog = requireContext().showDownloadVideoDialog(
adapter, downloadList,
dismissAction = {
requireContext().saveDownloadRecordFile(downloadList)
downloadDialog = null
},
)
......@@ -170,26 +169,12 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
private fun initDownloadAdapter() {
if (downloadAdapter == null) {
downloadAdapter = DownloadAdapter()
downloadAdapter = DownloadAdapter(requireActivity())
}
downloadAdapter?.downloadAction = {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(requireActivity(), false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
downloadDialog?.dismiss()
downloadAdapter?.beginProgressAction = {
requireContext().saveDownloadRecordFile(downloadList)
}
}
} else {
downloadDialog?.dismiss()
downloadAdapter?.beginProgressAction = {
requireContext().saveDownloadRecordFile(downloadList)
}
}
downloadDialog?.dismiss()
}
downloadAdapter?.downloadFinishAction = { id ->
downloadDialog?.dismiss()
val recordFile = requireContext().getDownloadJson()
......@@ -199,9 +184,7 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
bean?.let {
requireContext().showDownloadFinishDialog(it) { callDownloadDialog() }
}
requireContext().saveDownloadRecordFile(downloadList)
}
}
private var keyword = ""
......@@ -400,6 +383,7 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
view: WebView?,
request: WebResourceRequest?
): Boolean {
LogEx.logDebug(TAG, "shouldOverrideUrlLoading")
if (request != null) {
val uri = request.url
val scheme = uri.scheme
......@@ -418,6 +402,11 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
return false
}
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
downloadList.clear()
}
override fun onPageFinished(view: WebView?, url: String?) {
LogEx.logDebug(TAG, "onPageFinished")
super.onPageFinished(view, url)
......@@ -482,6 +471,8 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
@SuppressLint("NotifyDataSetChanged")
fun addVideoLink(addUri: String) {
if (downloadList.map { it.url }.contains(addUri)) return
val olderList = arrayListOf<DownloadBean>()
val recordFile = requireContext().getDownloadJson()
olderList.addAll(getDownloadJsonBean(recordFile, Gson()))
......@@ -585,8 +576,21 @@ class WebViewFragment() : BaseFragment<FragmentWebViewBinding>() {
override fun onDestroy() {
super.onDestroy()
requireContext().saveDownloadRecordFile(downloadList)
binding.webView.destroy()
}
override fun onResume() {
super.onResume()
if (requireContext().checkStorePermission()) {
upDateDownloadList()
}
}
private fun upDateDownloadList() {
downloadList.forEach {
it.status = FileDownloader.getImpl().getStatus(it.url, it.path)
}
downloadAdapter?.submitList(downloadList)
}
}
\ No newline at end of file
......@@ -68,14 +68,7 @@ class WebStoreActivity : BaseActivity<ActivityWebStoreBinding>() {
super.initListener()
onBackPressedDispatcher.addCallback {
if (System.currentTimeMillis() - lastShowInter > intervalAdTime() * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@WebStoreActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finishToMain()
}
}else{
AdmobMaxHelper.showIntervalAd(this@WebStoreActivity) {
finishToMain()
}
}
......
......@@ -76,11 +76,10 @@ object DownloadUtils {
return path
}
fun Context.saveDownloadRecordFile(downloadList: List<DownloadBean>) = Thread {
downloadList.forEach {
LogEx.logDebug(TAG, "saveDownloadRecordFile ${it.downloadId} ${it.name} ${it.path} status=${it.status}")
}
/**
*
*/
fun Context.saveDownloadRecordFile(downloadList: List<DownloadBean>, whenCall: String = "") = Thread {
val recordFile = getDownloadJson()
......@@ -111,8 +110,14 @@ object DownloadUtils {
arrayList.addAll(startedList)
arrayList.addAll(finishList)
val urlList = arrayList.map { it.url }
val setList = urlList.toSet()
if (urlList.size != setList.size) {
LogEx.logDebug(TAG, "$whenCall Duplication Save")
}
arrayList.forEach {
LogEx.logDebug(TAG, "saveDownloadRecordFile ${it.name} ${it.downloadId} ${it.status} ${it.path}")
LogEx.logDebug(TAG, "saveDownloadRecordFile $whenCall ${it.name} ${it.downloadId} ${it.status} ${it.path}")
}
val json = downloadBeanGson.toJson(arrayList)
......
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