Commit cbe944fc authored by wanglei's avatar wanglei

...

parent 3f2e9fa5
...@@ -93,4 +93,14 @@ object ConstObject { ...@@ -93,4 +93,14 @@ object ConstObject {
field = value field = value
AppPreferences.getInstance().put("webPrivacy", value, true) AppPreferences.getInstance().put("webPrivacy", value, true)
} }
var downloadDisclaimer = false
get() {
return AppPreferences.getInstance().getBoolean("downloadDisclaimer", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("downloadDisclaimer", value, true)
}
} }
\ No newline at end of file
...@@ -127,7 +127,7 @@ object DownloadDialog { ...@@ -127,7 +127,7 @@ object DownloadDialog {
} }
fun Context.showDownloadFinishDialog(bean: DownloadBean) { fun Context.showDownloadFinishDialog(bean: DownloadBean, downloadAction: () -> Unit) {
val binding = DialogDownloadFinishBinding.inflate(LayoutInflater.from(this)) val binding = DialogDownloadFinishBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this).create() val dialog = AlertDialog.Builder(this).create()
dialog.setView(binding.root) dialog.setView(binding.root)
...@@ -139,9 +139,7 @@ object DownloadDialog { ...@@ -139,9 +139,7 @@ object DownloadDialog {
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
AdmobNativeUtils.showNativeAd(null, binding.flAd, R.layout.layout_admob_native_download) AdmobNativeUtils.showNativeAd(null, binding.flAd, R.layout.layout_admob_native_download)
binding.tvDownload.setOnClickListener {
}
binding.tvPlay.setOnClickListener { binding.tvPlay.setOnClickListener {
dialog.dismiss() dialog.dismiss()
startActivity(Intent(this, MediaVideoDetailActivity::class.java).apply { startActivity(Intent(this, MediaVideoDetailActivity::class.java).apply {
...@@ -152,6 +150,9 @@ object DownloadDialog { ...@@ -152,6 +150,9 @@ object DownloadDialog {
putExtra("uri", bean.path) putExtra("uri", bean.path)
}) })
} }
binding.tvDownload.setOnClickListener {
downloadAction.invoke()
}
} }
} }
\ No newline at end of file
...@@ -78,7 +78,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -78,7 +78,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
from = intent.extras?.getString("from") ?: "" from = intent.extras?.getString("from") ?: ""
val url = intent.extras?.getString("url") ?: "" val url = intent.extras?.getString("url") ?: ""
binding.editWeb.setText(url) binding.editWeb.text = url
val searchEngine = intent.extras?.getString("searchEngine") ?: searchEngineSp val searchEngine = intent.extras?.getString("searchEngine") ?: searchEngineSp
when (searchEngine) { when (searchEngine) {
...@@ -117,7 +117,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() { ...@@ -117,7 +117,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
mChangeSearchUrl = RxBus.get().register(Constants.CHANGE_SEARCH_URL, String::class.java) mChangeSearchUrl = RxBus.get().register(Constants.CHANGE_SEARCH_URL, String::class.java)
mChangeSearchUrl?.observeOn(AndroidSchedulers.mainThread())?.subscribe { t -> mChangeSearchUrl?.observeOn(AndroidSchedulers.mainThread())?.subscribe { t ->
currentFragment?.loadWebView(t) currentFragment?.loadWebView(t)
binding.editWeb.setText(t) binding.editWeb.text = t
} }
addNewWebSite(url) addNewWebSite(url)
......
...@@ -24,6 +24,7 @@ import androidx.core.view.isVisible ...@@ -24,6 +24,7 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.MyApplication import com.base.browserwhite.MyApplication
import com.base.browserwhite.bean.BookmarkBean import com.base.browserwhite.bean.BookmarkBean
import com.base.browserwhite.bean.ConstObject.downloadDisclaimer
import com.base.browserwhite.bean.ConstObject.webPrivacy import com.base.browserwhite.bean.ConstObject.webPrivacy
import com.base.browserwhite.bean.DownloadBean import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.bean.HistoryBean import com.base.browserwhite.bean.HistoryBean
...@@ -32,6 +33,7 @@ import com.base.browserwhite.ui.activity.download.DownloadAdapter ...@@ -32,6 +33,7 @@ import com.base.browserwhite.ui.activity.download.DownloadAdapter
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadFinishDialog import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadFinishDialog
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadVideoDialog import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadVideoDialog
import com.base.browserwhite.ui.fragment.BaseFragment import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.ui.views.DialogViews.showDownloadDisclaimer
import com.base.browserwhite.ui.views.PermissionDialog.showPermissionBottomSheet import com.base.browserwhite.ui.views.PermissionDialog.showPermissionBottomSheet
import com.base.browserwhite.utils.ColorUtils import com.base.browserwhite.utils.ColorUtils
import com.base.browserwhite.utils.DownloadUtils import com.base.browserwhite.utils.DownloadUtils
...@@ -103,26 +105,35 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -103,26 +105,35 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
} }
binding.flDownload.setOnClickListener { binding.flDownload.setOnClickListener {
if (!requireContext().checkStorePermission()) { callDownloadDialog()
val launcher = (requireActivity() as WebBrowserActivity).launcher }
requireContext().showPermissionBottomSheet(launcher) {}
return@setOnClickListener
}
initDownloadAdapter() }
downloadAdapter?.let { adapter -> private fun callDownloadDialog() {
downloadDialog = requireContext().showDownloadVideoDialog( if (!downloadDisclaimer) {
adapter, downloadList, requireContext().showDownloadDisclaimer {}
dismissAction = { downloadDisclaimer = true
requireContext().saveDownloadRecordFile(downloadList) return
downloadDialog = null
},
)
}
} }
if (!requireContext().checkStorePermission()) {
val launcher = (requireActivity() as WebBrowserActivity).launcher
requireContext().showPermissionBottomSheet(launcher) {}
return
}
initDownloadAdapter()
downloadAdapter?.let { adapter ->
downloadDialog = requireContext().showDownloadVideoDialog(
adapter, downloadList,
dismissAction = {
requireContext().saveDownloadRecordFile(downloadList)
downloadDialog = null
},
)
}
} }
private fun initDownloadAdapter() { private fun initDownloadAdapter() {
...@@ -141,12 +152,14 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() { ...@@ -141,12 +152,14 @@ class WebViewFragment : BaseFragment<FragmentWebViewBinding>() {
val bean = DownloadUtils.getDownloadJsonBean(recordFile).find { it.downloadId == id } val bean = DownloadUtils.getDownloadJsonBean(recordFile).find { it.downloadId == id }
val file = File(bean?.path ?: "") val file = File(bean?.path ?: "")
LogEx.logDebug(TAG, "downloadFinishAction id=$id ${bean?.downloadId} ${bean?.name} ${bean?.path}} exists=${file.exists()}") LogEx.logDebug(TAG, "downloadFinishAction id=$id ${bean?.downloadId} ${bean?.name} ${bean?.path}} exists=${file.exists()}")
bean?.let { requireContext().showDownloadFinishDialog(it) } bean?.let {
requireContext().showDownloadFinishDialog(it) { callDownloadDialog() }
}
requireContext().saveDownloadRecordFile(downloadList) requireContext().saveDownloadRecordFile(downloadList)
} }
} }
fun dropAndBounceButton(button: View) { private fun dropAndBounceButton(button: View) {
// 初始位置 // 初始位置
button.isVisible = downloadList.isNotEmpty() button.isVisible = downloadList.isNotEmpty()
......
...@@ -26,6 +26,7 @@ import com.base.browserwhite.databinding.DialogBookmarkAddedRootBinding ...@@ -26,6 +26,7 @@ import com.base.browserwhite.databinding.DialogBookmarkAddedRootBinding
import com.base.browserwhite.databinding.DialogCleanerReocordBinding import com.base.browserwhite.databinding.DialogCleanerReocordBinding
import com.base.browserwhite.databinding.DialogDefaultBrowserBinding import com.base.browserwhite.databinding.DialogDefaultBrowserBinding
import com.base.browserwhite.databinding.DialogDeleteTipBinding import com.base.browserwhite.databinding.DialogDeleteTipBinding
import com.base.browserwhite.databinding.DialogDownloadDisclaimerBinding
import com.base.browserwhite.databinding.DialogMediaMoreBinding import com.base.browserwhite.databinding.DialogMediaMoreBinding
import com.base.browserwhite.databinding.DialogMoreWebbrowserBinding import com.base.browserwhite.databinding.DialogMoreWebbrowserBinding
import com.base.browserwhite.databinding.DialogMyAccountBinding import com.base.browserwhite.databinding.DialogMyAccountBinding
...@@ -34,6 +35,7 @@ import com.base.browserwhite.help.Constants ...@@ -34,6 +35,7 @@ import com.base.browserwhite.help.Constants
import com.base.browserwhite.help.RxBus import com.base.browserwhite.help.RxBus
import com.base.browserwhite.ui.activity.about.AboutActivity import com.base.browserwhite.ui.activity.about.AboutActivity
import com.base.browserwhite.ui.activity.feedback.FeedbackActivity import com.base.browserwhite.ui.activity.feedback.FeedbackActivity
import com.base.browserwhite.ui.views.DialogViews.showAddRootBookmarkDialog
import com.base.browserwhite.utils.ActivityLauncher import com.base.browserwhite.utils.ActivityLauncher
import com.base.browserwhite.utils.AppPreferences import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.RoleManagerUtils.isDefaultBrowser import com.base.browserwhite.utils.RoleManagerUtils.isDefaultBrowser
...@@ -442,5 +444,27 @@ object DialogViews { ...@@ -442,5 +444,27 @@ object DialogViews {
return dialog return dialog
} }
fun Context.showDownloadDisclaimer(gotAction: () -> Unit) {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogDownloadDisclaimerBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(false)
dialog.show()
dialog.window?.setDimAmount(0f)
val parentView = binding.root.parent as View
val behavior = BottomSheetBehavior.from(parentView)
//展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED
binding.tvGot.setOnClickListener {
dialog.dismiss()
gotAction.invoke()
}
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="#EFF0F5" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_eff0f5_tlf15"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="23dp"
android:text="Disclaimer"
android:textColor="@color/black"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="18dp"
android:text="Our video download feature assists users in
downloading videos from third-party websites. Users
must comply with applicable laws and the terms of
use of the third-party website. We are not liable for
the video content downloaded through our service, and
users download videos at their own risk. We do not
guarantee the accuracy, legality, security, or
completeness of the video content on third-party
websites. Users are responsible for assessing and
assuming the risks associated with using such content.
If downloaded video content infringes upon intellectual
property or other legal rights, please contact us
promptly. We may modify and update this disclaimer
at any time, and users should read and understand it
before using our service. Contact us for any questions
"
android:textColor="#222327"
android:textSize="13sp"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_got"
android:layout_width="338dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:layout_marginBottom="25dp"
android:background="@drawable/bg_0571ed_25"
android:gravity="center"
android:text="Got it"
android:textColor="@color/white"
tools:ignore="HardcodedText" />
</LinearLayout>
\ No newline at end of file
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