Commit dbb57029 authored by wanglei's avatar wanglei

...

parent fc626689
...@@ -47,11 +47,15 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -47,11 +47,15 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
"Picture", "Video" -> { "Picture", "Video" -> {
adapter = MediaAdapter(1, clickAction = { bean -> adapter = MediaAdapter(1, clickAction = { bean ->
if (tittle == "Picture") { if (tittle == "Picture") {
startActivity(Intent(this, MediaImageDetailActivity::class.java)) startActivity(Intent(this, MediaImageDetailActivity::class.java).apply {
putExtra("path", bean.path)
})
} else { } else {
LogEx.logDebug(TAG, "uri=${bean.uri}") LogEx.logDebug(TAG, "uri=${bean.uri}")
val videoIntent = Intent(this, MediaVideoDetailActivity::class.java) val videoIntent = Intent(this, MediaVideoDetailActivity::class.java)
videoIntent.putExtra("uri", bean.uri.toString()) videoIntent.putExtra("uri", bean.uri.toString())
videoIntent.putExtra("path", bean.path)
videoIntent.putExtra("mimeType", bean.mimeType)
startActivity(videoIntent) startActivity(videoIntent)
} }
}) })
...@@ -75,7 +79,6 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -75,7 +79,6 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
binding.rv.adapter = adapter binding.rv.adapter = adapter
initData()
} }
override fun initListener() { override fun initListener() {
...@@ -88,6 +91,11 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() { ...@@ -88,6 +91,11 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
} }
} }
override fun onResume() {
super.onResume()
initData()
}
private fun initData() = lifecycleScope.launch(Dispatchers.IO) { private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val mediaList = when (tittle) { val mediaList = when (tittle) {
"Picture" -> getMediaPhoto() "Picture" -> getMediaPhoto()
......
package com.base.browserwhite.ui.activity.mediabrowser package com.base.browserwhite.ui.activity.mediabrowser
import android.graphics.Color
import android.net.Uri
import androidx.core.view.updatePadding
import com.base.browserwhite.databinding.ActivityMediaImageDetailBinding import com.base.browserwhite.databinding.ActivityMediaImageDetailBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.LogEx
import com.bumptech.glide.Glide
import java.io.File
class MediaImageDetailActivity : BaseActivity<ActivityMediaImageDetailBinding>() { class MediaImageDetailActivity : BaseActivity<ActivityMediaImageDetailBinding>() {
private val TAG = "MediaImageDetailActivity"
override val binding: ActivityMediaImageDetailBinding by lazy { override val binding: ActivityMediaImageDetailBinding by lazy {
ActivityMediaImageDetailBinding.inflate(layoutInflater) ActivityMediaImageDetailBinding.inflate(layoutInflater)
} }
private var uri: String = ""
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
uri = intent.extras?.getString("uri") ?: ""
LogEx.logDebug(TAG, "uri=$uri")
val path = intent.extras?.getString("path") ?: ""
Glide.with(this).load(path).fitCenter().into(binding.iv)
} }
override fun initListener() {
super.initListener()
binding.ivDelete.setOnClickListener {
showDeleteTipDialog {
val path = intent.extras?.getString("path") ?: ""
val file = File(path)
runCatching {
file.delete()
}
finish()
}
}
binding.ivShare.setOnClickListener {
this.shareAction(Uri.parse(uri), intent.extras?.getString("mimeType") ?: "")
}
}
} }
\ No newline at end of file
package com.base.browserwhite.ui.activity.mediabrowser package com.base.browserwhite.ui.activity.mediabrowser
import android.graphics.Color import android.graphics.Color
import android.net.Uri
import android.widget.SeekBar import android.widget.SeekBar
import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.SeekBar.OnSeekBarChangeListener
import androidx.activity.addCallback import androidx.activity.addCallback
...@@ -11,13 +12,16 @@ import androidx.media3.common.Player ...@@ -11,13 +12,16 @@ import androidx.media3.common.Player
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import com.base.browserwhite.databinding.ActivityMediaVideoDetailBinding import com.base.browserwhite.databinding.ActivityMediaVideoDetailBinding
import com.base.browserwhite.ui.activity.BaseActivity import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
import com.base.browserwhite.utils.BarUtils import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File
class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() { class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() {
private val TAG = "MediaVideoDetailActivity" private val TAG = "MediaVideoDetailActivity"
...@@ -28,13 +32,14 @@ class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() ...@@ -28,13 +32,14 @@ class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>()
private lateinit var player: ExoPlayer private lateinit var player: ExoPlayer
private var job: Job? = null private var job: Job? = null
private var playEnd: Boolean = false private var playEnd: Boolean = false
private var uri: String = ""
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true) BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
val uri = intent.extras?.getString("uri") ?: "" uri = intent.extras?.getString("uri") ?: ""
LogEx.logDebug(TAG, "uri=$uri") LogEx.logDebug(TAG, "uri=$uri")
player = ExoPlayer.Builder(this).build() player = ExoPlayer.Builder(this).build()
...@@ -133,6 +138,19 @@ class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() ...@@ -133,6 +138,19 @@ class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>()
} }
}) })
binding.ivDelete.setOnClickListener {
showDeleteTipDialog {
val path = intent.extras?.getString("path") ?: ""
val file = File(path)
runCatching {
file.delete()
}
finish()
}
}
binding.ivShare.setOnClickListener {
this.shareAction(Uri.parse(uri), intent.extras?.getString("mimeType") ?: "")
}
} }
override fun onPause() { override fun onPause() {
......
...@@ -19,6 +19,7 @@ import com.base.browserwhite.ui.activity.mediabrowser.MediaBrowserActivity ...@@ -19,6 +19,7 @@ import com.base.browserwhite.ui.activity.mediabrowser.MediaBrowserActivity
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
import com.base.browserwhite.utils.IntentEx.shareAction
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.MediaStoreUtils.getMediaApkSize import com.base.browserwhite.utils.MediaStoreUtils.getMediaApkSize
...@@ -74,20 +75,7 @@ class FileFragment : BaseFragment<FragmentFileBinding>() { ...@@ -74,20 +75,7 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
} }
}, },
shareAction = { shareAction = {
val shareIntent = Intent().apply { context.shareAction(bean.uri, bean.mimeType)
action = Intent.ACTION_SEND
type = bean.mimeType
putExtra(Intent.EXTRA_STREAM, bean.uri)
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
// 可以添加更多额外信息,如主题、文本等
}
val chooserIntent = Intent.createChooser(shareIntent, "Share File")
if (shareIntent.resolveActivity(context.packageManager) != null) {
context.startActivity(chooserIntent)
} else {
Toast.makeText(context, "no app can share the file", Toast.LENGTH_SHORT).show()
}
}) })
} }
} }
......
package com.base.browserwhite.utils
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.widget.Toast
object IntentEx {
@SuppressLint("QueryPermissionsNeeded")
fun Context.shareAction(uri: Uri, mimeType: String) {
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND
type = mimeType
putExtra(Intent.EXTRA_STREAM,uri)
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
// 可以添加更多额外信息,如主题、文本等
}
val chooserIntent = Intent.createChooser(shareIntent, "Share File")
if (shareIntent.resolveActivity(this.packageManager) != null) {
this.startActivity(chooserIntent)
} else {
Toast.makeText(this, "no app can share the file", Toast.LENGTH_SHORT).show()
}
}
}
\ No newline at end of file
...@@ -7,4 +7,50 @@ ...@@ -7,4 +7,50 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.activity.mediabrowser.MediaImageDetailActivity"> tools:context=".ui.activity.mediabrowser.MediaImageDetailActivity">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="18dp"
android:src="@mipmap/s_fanhui"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginEnd="15dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/s_del"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:src="@mipmap/s_fenxiang"
tools:ignore="ContentDescription" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ 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