diff --git a/files/src/main/java/de/mm20/launcher2/files/FileSerialization.kt b/files/src/main/java/de/mm20/launcher2/files/FileSerialization.kt index cde0af33..f177cede 100644 --- a/files/src/main/java/de/mm20/launcher2/files/FileSerialization.kt +++ b/files/src/main/java/de/mm20/launcher2/files/FileSerialization.kt @@ -1,6 +1,7 @@ package de.mm20.launcher2.files import android.content.Context +import android.provider.DocumentsContract import android.provider.MediaStore import androidx.core.database.getStringOrNull import de.mm20.launcher2.ktx.jsonObjectOf @@ -51,7 +52,7 @@ class LocalFileDeserializer( val directory = java.io.File(path).isDirectory val id = cursor.getLong(0) val mimeType = cursor.getStringOrNull(3) - ?: if (directory) "inode/directory" else LocalFile.getMimetypeByFileExtension( + ?: if (directory) "resource/folder" else LocalFile.getMimetypeByFileExtension( path.substringAfterLast( '.' ) diff --git a/files/src/main/java/de/mm20/launcher2/files/providers/LocalFileProvider.kt b/files/src/main/java/de/mm20/launcher2/files/providers/LocalFileProvider.kt index 62aa21aa..983e8b0e 100644 --- a/files/src/main/java/de/mm20/launcher2/files/providers/LocalFileProvider.kt +++ b/files/src/main/java/de/mm20/launcher2/files/providers/LocalFileProvider.kt @@ -1,6 +1,7 @@ package de.mm20.launcher2.files.providers import android.content.Context +import android.provider.DocumentsContract import android.provider.MediaStore import androidx.core.database.getStringOrNull import de.mm20.launcher2.permissions.PermissionGroup @@ -44,7 +45,7 @@ internal class LocalFileProvider( if (!java.io.File(path).exists()) continue val directory = java.io.File(path).isDirectory val mimeType = (cursor.getStringOrNull(4) - ?: if (directory) "inode/directory" else LocalFile.getMimetypeByFileExtension( + ?: if (directory) "resource/folder" else LocalFile.getMimetypeByFileExtension( path.substringAfterLast( '.' ) diff --git a/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt index 12c7a92a..8acdf797 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt @@ -8,7 +8,7 @@ import android.graphics.drawable.BitmapDrawable import android.location.Geocoder import android.media.MediaMetadataRetriever import android.media.ThumbnailUtils -import android.os.Build +import android.net.Uri import android.provider.MediaStore import android.text.format.DateUtils import android.util.Size @@ -18,7 +18,6 @@ import de.mm20.launcher2.files.R import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.ktx.formatToString import de.mm20.launcher2.media.ThumbnailUtilsCompat -import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.preferences.Settings.IconSettings.LegacyIconBackground import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -41,7 +40,11 @@ open class LocalFile( override val isStoredInCloud = false - override suspend fun loadIcon(context: Context, size: Int, legacyIconBackground: LegacyIconBackground): LauncherIcon? { + override suspend fun loadIcon( + context: Context, + size: Int, + legacyIconBackground: LegacyIconBackground + ): LauncherIcon? { if (!JavaIOFile(path).exists()) return null when { mimeType.startsWith("image/") -> { @@ -126,10 +129,14 @@ open class LocalFile( override fun getLaunchIntent(context: Context): Intent? { - val uri = FileProvider.getUriForFile( - context, - context.applicationContext.packageName + ".fileprovider", JavaIOFile(path) - ) + val uri = if (isDirectory) { + Uri.parse(path) + } else { + FileProvider.getUriForFile( + context, + context.applicationContext.packageName + ".fileprovider", JavaIOFile(path) + ) + } return Intent(Intent.ACTION_VIEW) .setDataAndType(uri, mimeType) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION) @@ -152,13 +159,13 @@ open class LocalFile( context.contentResolver.delete( MediaStore.Files.getContentUri("external"), "${MediaStore.Files.FileColumns._ID} = ?", - arrayOf(id.toString())) + arrayOf(id.toString()) + ) } } - - companion object: KoinComponent { + companion object : KoinComponent { internal fun getMimetypeByFileExtension(extension: String): String { return when (extension) { "apk" -> "application/vnd.android.package-archive"