diff --git a/services/music/src/main/java/de/mm20/launcher2/music/MusicService.kt b/services/music/src/main/java/de/mm20/launcher2/music/MusicService.kt index 822c3265..105feda1 100644 --- a/services/music/src/main/java/de/mm20/launcher2/music/MusicService.kt +++ b/services/music/src/main/java/de/mm20/launcher2/music/MusicService.kt @@ -396,7 +396,7 @@ internal class MusicServiceImpl( send(SupportedActions()) return@collectLatest } - send(SupportedActions(state.actions, state.customActions)) + send(SupportedActions(lastPlayerPackage, state.actions, state.customActions)) } }.shareIn(scope, SharingStarted.WhileSubscribed(), 1) diff --git a/services/music/src/main/java/de/mm20/launcher2/music/SupportedActions.kt b/services/music/src/main/java/de/mm20/launcher2/music/SupportedActions.kt index b69ca3b5..01d45c22 100644 --- a/services/music/src/main/java/de/mm20/launcher2/music/SupportedActions.kt +++ b/services/music/src/main/java/de/mm20/launcher2/music/SupportedActions.kt @@ -2,8 +2,6 @@ package de.mm20.launcher2.music import android.media.session.PlaybackState import android.media.session.PlaybackState.CustomAction -import android.os.Bundle -import android.util.Log data class SupportedActions( val stop: Boolean = false, @@ -16,7 +14,7 @@ data class SupportedActions( val setRating: Boolean = false, val customActions: List = emptyList() ) { - constructor(actions: Long?, customActions: List?) : this( + constructor(playerPackege: String?, actions: Long?, customActions: List?) : this( stop = actions?.and(PlaybackState.ACTION_STOP) == PlaybackState.ACTION_STOP, skipToNext = actions?.and(PlaybackState.ACTION_SKIP_TO_NEXT) == PlaybackState.ACTION_SKIP_TO_NEXT, skipToPrevious = actions?.and(PlaybackState.ACTION_SKIP_TO_PREVIOUS) == PlaybackState.ACTION_SKIP_TO_PREVIOUS, @@ -25,15 +23,12 @@ data class SupportedActions( seekTo = actions?.and(PlaybackState.ACTION_SEEK_TO) == PlaybackState.ACTION_SEEK_TO, setPlaybackSpeed = actions?.and(PlaybackState.ACTION_SET_PLAYBACK_SPEED) == PlaybackState.ACTION_SET_PLAYBACK_SPEED, setRating = actions?.and(PlaybackState.ACTION_SET_RATING) == PlaybackState.ACTION_SET_RATING, - customActions = customActions ?: emptyList(), - ) { - for (action in customActions ?: emptyList()) { - Log.d("MM20", action.action.toString()) - val extras = action.extras ?: Bundle.EMPTY - val keySet = extras.keySet() - for (key in keySet) { - Log.d("MM20", "$key: ${extras.get(key)}") + customActions = customActions?.filter { + // Most of Spotify's custom actions are known to be broken, blocklist them in release builds + if (!BuildConfig.DEBUG && playerPackege == "com.spotify.music") { + return@filter (it.action == "REMOVE_FROM_COLLECTION" || it.action == "ADD_TO_COLLECTION") } - } - } + true + } ?: emptyList(), + ) } \ No newline at end of file