Commit bdee4010 authored by wanglei's avatar wanglei

...

parent 18f6be20
...@@ -128,6 +128,17 @@ ...@@ -128,6 +128,17 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.base.browserwhite.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<service <service
android:name=".service.StayNotificationService" android:name=".service.StayNotificationService"
android:foregroundServiceType="dataSync" /> android:foregroundServiceType="dataSync" />
......
...@@ -4,6 +4,7 @@ import android.content.Intent ...@@ -4,6 +4,7 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Environment import android.os.Environment
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.content.FileProvider
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.browserwhite.R import com.base.browserwhite.R
...@@ -11,10 +12,13 @@ import com.base.browserwhite.bean.DownloadBean ...@@ -11,10 +12,13 @@ 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.showDeleteTipDialog
import com.base.browserwhite.ui.views.DialogViews.showGerPermission import com.base.browserwhite.ui.views.DialogViews.showGerPermission
import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.DownloadHelper.getDownloadJson import com.base.browserwhite.utils.DownloadHelper.getDownloadJson
import com.base.browserwhite.utils.DownloadHelper.getDownloadJsonBean import com.base.browserwhite.utils.DownloadHelper.getDownloadJsonBean
import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.KotlinExt.toFormatTime import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
...@@ -35,6 +39,19 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin ...@@ -35,6 +39,19 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
adapter = DownloadAdapter() adapter = DownloadAdapter()
adapter.moreAction = { archView, item ->
showMediaMoreDialog(archView,
deleteAction = {
showDeleteTipDialog {
runCatching { File(item.path).delete() }
adapter.remove(item)
}
},
shareAction = {
val uri = FileProvider.getUriForFile(this, "com.base.browserwhite.provider", File(item.path))
shareAction(uri, "video/*")
})
}
binding.rv.adapter = adapter binding.rv.adapter = adapter
if (checkStorePermission()) { if (checkStorePermission()) {
...@@ -63,19 +80,16 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin ...@@ -63,19 +80,16 @@ class WebDownloadManagerActivity : BaseActivity<ActivityWebDownloadManagerBindin
} }
private fun initData() { private fun initData() {
val appName: String = resources.getString(R.string.app_name)
val dir = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), appName) val list = getDownloadJsonBean(getDownloadJson())
if (dir.listFiles().isNullOrEmpty()) {
if (list.isEmpty()) {
binding.llEmpty.isVisible = true binding.llEmpty.isVisible = true
} else { } else {
val fileList = arrayListOf<File>()
val beanList = arrayListOf<DownloadBean>() val beanList = arrayListOf<DownloadBean>()
fileList.addAll(dir.listFiles() ?: arrayOf())
fileList.sortBy { it.lastModified() }
val timeList = arrayListOf<String>() val timeList = arrayListOf<String>()
getDownloadJsonBean(getDownloadJson()).forEach { old -> list.forEach { old ->
val time = old.time.toFormatTime() val time = old.time.toFormatTime()
if (!timeList.contains(time)) { if (!timeList.contains(time)) {
timeList.add(time) timeList.add(time)
......
...@@ -34,6 +34,7 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV ...@@ -34,6 +34,7 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
inner class DownloadViewHolder(view: View) : ViewHolder(view) inner class DownloadViewHolder(view: View) : ViewHolder(view)
var downloadAction: (() -> Unit)? = null var downloadAction: (() -> Unit)? = null
var moreAction: ((archView: View, item: DownloadBean) -> Unit)? = null
override fun onBindViewHolder(holder: DownloadViewHolder, position: Int, item: DownloadBean?) { override fun onBindViewHolder(holder: DownloadViewHolder, position: Int, item: DownloadBean?) {
if (item == null) return if (item == null) return
...@@ -47,6 +48,9 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV ...@@ -47,6 +48,9 @@ class DownloadAdapter : BaseQuickAdapter<DownloadBean, DownloadAdapter.DownloadV
Glide.with(context).load(file.absoluteFile).centerCrop().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()
binding.flMore.setOnClickListener {
moreAction?.invoke(it, item)
}
} else if (item.uiType == 2) { } else if (item.uiType == 2) {
val binding = ItemDownloadCardBinding.bind(holder.itemView) val binding = ItemDownloadCardBinding.bind(holder.itemView)
......
...@@ -122,10 +122,10 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -122,10 +122,10 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
}) })
} }
binding.llDownload.setOnClickListener { binding.llDownload.setOnClickListener {
// startActivity(Intent(requireContext(), WebDownloadManagerActivity::class.java)) startActivity(Intent(requireContext(), WebDownloadManagerActivity::class.java))
startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply { // startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply {
putExtra("url", "https://mixkit.co/free-stock-video/girl-dancing-happily-in-a-field-of-flowers-4702/") // putExtra("url", "https://mixkit.co/free-stock-video/girl-dancing-happily-in-a-field-of-flowers-4702/")
}) // })
} }
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
</LinearLayout> </LinearLayout>
<ImageView <ImageView
android:visibility="gone"
android:id="@+id/iv_delete" android:id="@+id/iv_delete"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="internal_files" path="." />
</paths>
\ 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