From fa4f92c9f4d09661fa05d781c611458ef7f16400 Mon Sep 17 00:00:00 2001 From: Vishal Nehra Date: Mon, 30 Oct 2023 05:00:55 +0530 Subject: [PATCH] Fix media scanner --- app/build.gradle | 1 + .../home_page/ui/files/FilesViewModel.kt | 10 ++++++++- .../amaze/fileutilities/utilis/FileUtils.kt | 21 ++++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7e8864b1..4eda6bd4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,6 +38,7 @@ plugins { id("com.github.triplet.play") version "3.8.1" id 'com.starter.easylauncher' id 'com.mikepenz.aboutlibraries.plugin' + id 'org.jetbrains.kotlin.android' } android { diff --git a/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt b/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt index 82206fef..c03422c5 100644 --- a/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt +++ b/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt @@ -196,7 +196,7 @@ class FilesViewModel(val applicationContext: Application) : applicationContext, applicationContext.packageName, file ) - FileUtils.scanFile(uri, applicationContext) + FileUtils.scanFile(uri, data.path, applicationContext) val usedSpace = file.totalSpace - file.usableSpace val progress = if (file.totalSpace != 0L) { @@ -1068,6 +1068,7 @@ class FilesViewModel(val applicationContext: Application) : uri -> FileUtils.scanFile( uri, + mediaFileInfo.path, applicationContext ) } @@ -1130,6 +1131,7 @@ class FilesViewModel(val applicationContext: Application) : originalUri -> FileUtils.scanFile( originalUri, + it.path, applicationContext ) } @@ -1141,6 +1143,7 @@ class FilesViewModel(val applicationContext: Application) : ) FileUtils.scanFile( uri, + it.path, applicationContext ) successProcessedPair = successProcessedPair.copy( @@ -1233,6 +1236,7 @@ class FilesViewModel(val applicationContext: Application) : } FileUtils.scanFile( contentUri, + path, applicationContext ) } @@ -1243,6 +1247,7 @@ class FilesViewModel(val applicationContext: Application) : ) FileUtils.scanFile( uri, + path, applicationContext ) successProcessedPair = successProcessedPair.copy( @@ -1329,6 +1334,7 @@ class FilesViewModel(val applicationContext: Application) : ) FileUtils.scanFile( uri, + originalFilePath, applicationContext ) moveToTrashLiveData.postValue(successProcessedPair) @@ -1362,6 +1368,7 @@ class FilesViewModel(val applicationContext: Application) : ) FileUtils.scanFile( uri, + originalFilePath, applicationContext ) return true @@ -1401,6 +1408,7 @@ class FilesViewModel(val applicationContext: Application) : ) FileUtils.scanFile( uri, + dest, applicationContext ) restoreFromTrashLiveData.postValue(successProcessedPair) diff --git a/app/src/main/java/com/amaze/fileutilities/utilis/FileUtils.kt b/app/src/main/java/com/amaze/fileutilities/utilis/FileUtils.kt index 3510892a..2cd894b2 100644 --- a/app/src/main/java/com/amaze/fileutilities/utilis/FileUtils.kt +++ b/app/src/main/java/com/amaze/fileutilities/utilis/FileUtils.kt @@ -23,6 +23,7 @@ package com.amaze.fileutilities.utilis import android.annotation.TargetApi import android.content.Context import android.content.Intent +import android.media.MediaScannerConnection import android.net.Uri import android.os.Build.VERSION import android.os.Build.VERSION_CODES @@ -344,9 +345,26 @@ class FileUtils { * @param uri File's [Uri] * @param c [Context] */ - fun scanFile(uri: Uri, c: Context) { + fun scanFile(uri: Uri, path: String, c: Context) { val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri) c.sendBroadcast(mediaScanIntent) + scanFile(path, c) + } + + /** + * Triggers [Intent.ACTION_MEDIA_SCANNER_SCAN_FILE] intent to refresh the media store. + * + * @param path File's [path] + * @param c [Context] + */ + private fun scanFile(path: String, c: Context) { + MediaScannerConnection.scanFile( + c, + arrayOf(path), + null + ) { path: String, _: Uri? -> + log.info("MediaConnectionUtils#scanFile finished scanning path$path") + } } fun deleteFileByPath(context: Context, path: String): Boolean { @@ -361,6 +379,7 @@ class FileUtils { uri -> scanFile( uri, + path, context ) }