将图片或视频复制到图库- Android studio -Kotlin

7kjnsjlb  于 2023-06-20  发布在  Android
关注(0)|答案(2)|浏览(178)

我使用以下代码将照片或视频复制到另一个文件夹:

  1. override fun onButtonClick(position: Int) {
  2. val origin = File(statuses[position]) // Addresses of photos or videos are stored in the mutable list of statuses
  3. val destination = if (statuses[position].endsWith(".jpg"))
  4. File(Environment.getExternalStorageDirectory().path + '/' + Environment.DIRECTORY_PICTURES + FilePath.PICTURES_DIRECTORY + '/' + Random.nextInt() + ".jpg")
  5. else File(Environment.getExternalStorageDirectory().path + '/' + Environment.DIRECTORY_MOVIES + FilePath.VIDEO_DIRECTORY + '/' + Random.nextInt() + ".mp4")
  6. origin.copyTo(destination)
  7. }

文件将被复制并显示在文件管理器中。但是我在图库里找不到那个复制的文件。我怎么能在画廊里展示它呢?

fcwjkofz

fcwjkofz1#

是否尝试使用MediaScannerConnection类通知媒体扫描程序有关新文件的信息?

  1. override fun onButtonClick(position: Int) {
  2. val origin = File(statuses[position])
  3. val destination = if (statuses[position].endsWith(".jpg"))
  4. File(Environment.getExternalStorageDirectory().path + '/' + Environment.DIRECTORY_PICTURES + FilePath.PICTURES_DIRECTORY + '/' + Random.nextInt() + ".jpg")
  5. else File(Environment.getExternalStorageDirectory().path + '/' + Environment.DIRECTORY_MOVIES + FilePath.VIDEO_DIRECTORY + '/' + Random.nextInt() + ".mp4")
  6. origin.copyTo(destination)
  7. // Notify the media scanner about the new file
  8. MediaScannerConnection.scanFile(
  9. applicationContext,
  10. arrayOf(destination.absolutePath),
  11. null,
  12. null
  13. )
  14. }

并且不要忘记添加必要的权限

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望这能帮上忙

展开查看全部
uujelgoq

uujelgoq2#

我想应该是这样的:

  1. val appDirectoryName = "XYZ"
  2. val imageRoot = File(
  3. Environment.getExternalStoragePublicDirectory(
  4. Environment.DIRECTORY_PICTURES
  5. ), appDirectoryName
  6. )

这将在图库中创建一个新文件,并为您提供该位置的根目录
AKA:目的地

相关问题