Commit dbb57029 authored by wanglei's avatar wanglei

...

parent fc626689
......@@ -47,11 +47,15 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
"Picture", "Video" -> {
adapter = MediaAdapter(1, clickAction = { bean ->
if (tittle == "Picture") {
startActivity(Intent(this, MediaImageDetailActivity::class.java))
startActivity(Intent(this, MediaImageDetailActivity::class.java).apply {
putExtra("path", bean.path)
})
} else {
LogEx.logDebug(TAG, "uri=${bean.uri}")
val videoIntent = Intent(this, MediaVideoDetailActivity::class.java)
videoIntent.putExtra("uri", bean.uri.toString())
videoIntent.putExtra("path", bean.path)
videoIntent.putExtra("mimeType", bean.mimeType)
startActivity(videoIntent)
}
})
......@@ -75,7 +79,6 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
binding.rv.adapter = adapter
initData()
}
override fun initListener() {
......@@ -88,6 +91,11 @@ class MediaBrowserActivity : BaseActivity<ActivityMediaBrowserBinding>() {
}
}
override fun onResume() {
super.onResume()
initData()
}
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val mediaList = when (tittle) {
"Picture" -> getMediaPhoto()
......
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.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>() {
private val TAG = "MediaImageDetailActivity"
override val binding: ActivityMediaImageDetailBinding by lazy {
ActivityMediaImageDetailBinding.inflate(layoutInflater)
}
private var uri: String = ""
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
import android.graphics.Color
import android.net.Uri
import android.widget.SeekBar
import android.widget.SeekBar.OnSeekBarChangeListener
import androidx.activity.addCallback
......@@ -11,13 +12,16 @@ import androidx.media3.common.Player
import androidx.media3.exoplayer.ExoPlayer
import com.base.browserwhite.databinding.ActivityMediaVideoDetailBinding
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 kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import java.io.File
class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>() {
private val TAG = "MediaVideoDetailActivity"
......@@ -28,13 +32,14 @@ class MediaVideoDetailActivity : BaseActivity<ActivityMediaVideoDetailBinding>()
private lateinit var player: ExoPlayer
private var job: Job? = null
private var playEnd: Boolean = false
private var uri: String = ""
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
val uri = intent.extras?.getString("uri") ?: ""
uri = intent.extras?.getString("uri") ?: ""
LogEx.logDebug(TAG, "uri=$uri")
player = ExoPlayer.Builder(this).build()
......@@ -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() {
......
......@@ -19,6 +19,7 @@ import com.base.browserwhite.ui.activity.mediabrowser.MediaBrowserActivity
import com.base.browserwhite.ui.adapter.MediaAdapter
import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
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.LogEx
import com.base.browserwhite.utils.MediaStoreUtils.getMediaApkSize
......@@ -74,20 +75,7 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
}
},
shareAction = {
val shareIntent = Intent().apply {
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()
}
context.shareAction(bean.uri, bean.mimeType)
})
}
}
......
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 @@
android:layout_height="match_parent"
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>
\ 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