From 2119e0c754ae87d835d0d34e5856e5c59c1b2485 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Thu, 14 Apr 2022 23:36:30 +0530 Subject: [PATCH] Fixed a crash when opening music file from a external file manager --- .../retromusic/activities/MainActivity.kt | 2 +- .../retromusic/helper/MusicPlayerRemote.kt | 13 +++++----- .../retromusic/repository/SongRepository.kt | 24 ------------------- 3 files changed, 7 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 6757172d2..0ead00101 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -179,7 +179,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { handled = true } if (uri != null && uri.toString().isNotEmpty()) { - MusicPlayerRemote.playFromUri(uri) + MusicPlayerRemote.playFromUri(this@MainActivity, uri) handled = true } else if (MediaStore.Audio.Playlists.CONTENT_TYPE == mimeType) { val id = parseLongFromIntent(intent, "playlistId", "playlist") diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt index 0a69baaaa..028460f8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt @@ -172,7 +172,7 @@ object MusicPlayerRemote : KoinComponent { return cursor.getString(columnIndex) } } catch (e: Exception) { - println(e.message) + e.printStackTrace() } finally { cursor?.close() } @@ -419,7 +419,7 @@ object MusicPlayerRemote : KoinComponent { } @JvmStatic - fun playFromUri(uri: Uri) { + fun playFromUri(context: Context, uri: Uri) { if (musicService != null) { var songs: List? = null @@ -431,10 +431,8 @@ object MusicPlayerRemote : KoinComponent { } else if (uri.authority == "media") { songId = uri.lastPathSegment } - songs = if (songId != null) { - songRepository.songs(songId) - } else { - songRepository.songsIgnoreBlacklist(uri) + if (songId != null) { + songs = songRepository.songs(songId) } } } @@ -447,7 +445,7 @@ object MusicPlayerRemote : KoinComponent { ) } if (songFile == null) { - val path = getFilePathFromUri(musicService!!, uri) + val path = getFilePathFromUri(context, uri) if (path != null) songFile = File(path) } @@ -462,6 +460,7 @@ object MusicPlayerRemote : KoinComponent { openQueue(songs, 0, true) } else { // TODO the file is not listed in the media store + context.showToast(R.string.unplayable_file) println("The file is not listed in the media store") } } diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt index 0b5f237e7..bf0184b92 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt @@ -52,8 +52,6 @@ interface SongRepository { fun song(cursor: Cursor?): Song fun song(songId: Long): Song - - fun songsIgnoreBlacklist(uri: Uri): List } class RealSongRepository(private val context: Context) : SongRepository { @@ -127,28 +125,6 @@ class RealSongRepository(private val context: Context) : SongRepository { ) } - override fun songsIgnoreBlacklist(uri: Uri): List { - var filePath = "" - context.contentResolver.query( - uri, - arrayOf(AudioColumns.DATA), - null, - null, - null - ).use { cursor -> - if (cursor != null) { - if (cursor.count != 0) { - cursor.moveToFirst() - filePath = cursor.getString(AudioColumns.DATA) - println("File Path: $filePath") - } - } - } - return songsByFilePath( - filePath, true - ) - } - private fun getSongFromCursorImpl( cursor: Cursor ): Song {