diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt index af3890d22..10e3c720e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -19,6 +19,7 @@ import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle import androidx.lifecycle.lifecycleScope +import androidx.localbroadcastmanager.content.LocalBroadcastManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding @@ -95,7 +96,8 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { } else { repository.insertSongs(listOf(song.toSongEntity(playlist.playListId))) } - sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) + LocalBroadcastManager.getInstance(this@DriveModeActivity) + .sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt index f9f05c919..bbbe67459 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt @@ -20,6 +20,7 @@ import android.os.Bundle import android.os.IBinder import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope +import androidx.localbroadcastmanager.content.LocalBroadcastManager import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.db.toPlayCount @@ -66,8 +67,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi override fun onDestroy() { super.onDestroy() MusicPlayerRemote.unbindFromService(serviceToken) - if (receiverRegistered) { - unregisterReceiver(musicStateReceiver) + if (receiverRegistered && musicStateReceiver != null) { + LocalBroadcastManager.getInstance(this).unregisterReceiver(musicStateReceiver!!) receiverRegistered = false } } @@ -97,7 +98,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi filter.addAction(MEDIA_STORE_CHANGED) filter.addAction(FAVORITE_STATE_CHANGED) - ContextCompat.registerReceiver(this, musicStateReceiver, filter, ContextCompat.RECEIVER_NOT_EXPORTED) + LocalBroadcastManager.getInstance(this).registerReceiver(musicStateReceiver!!, filter) receiverRegistered = true } @@ -107,8 +108,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi } override fun onServiceDisconnected() { - if (receiverRegistered) { - unregisterReceiver(musicStateReceiver) + if (receiverRegistered && musicStateReceiver != null) { + LocalBroadcastManager.getInstance(this).unregisterReceiver(musicStateReceiver!!) receiverRegistered = false } @@ -176,7 +177,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi "from_permissions_changed", true ) // just in case we need to know this at some point - sendBroadcast(intent) + LocalBroadcastManager.getInstance(this).sendBroadcast(intent) logD("sendBroadcast $hasPermissions") } diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt index e460b7956..30d455ea5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt @@ -25,6 +25,7 @@ import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.widget.RemoteViews import androidx.core.content.ContextCompat +import androidx.localbroadcastmanager.content.LocalBroadcastManager import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.model.Song @@ -50,7 +51,7 @@ abstract class BaseAppWidget : AppWidgetProvider() { updateIntent.putExtra(EXTRA_APP_WIDGET_NAME, NAME) updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds) updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY) - context.sendBroadcast(updateIntent) + LocalBroadcastManager.getInstance(context).sendBroadcast(updateIntent) } /** diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 178a781f5..91f8b9921 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -33,6 +33,7 @@ import androidx.appcompat.widget.Toolbar import androidx.core.os.bundleOf import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.navigation.findNavController import androidx.navigation.navOptions import androidx.viewpager.widget.ViewPager @@ -273,7 +274,8 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId))) } libraryViewModel.forceReload(ReloadType.Playlists) - requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) + LocalBroadcastManager.getInstance(requireContext()) + .sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index f7e34433c..08c12602d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -26,6 +26,7 @@ import android.widget.ImageButton import android.widget.TextView import androidx.appcompat.widget.PopupMenu import androidx.lifecycle.lifecycleScope +import androidx.localbroadcastmanager.content.LocalBroadcastManager import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R @@ -256,7 +257,8 @@ class FullPlaybackControlsFragment : libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId))) } libraryViewModel.forceReload(ReloadType.Playlists) - requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) + LocalBroadcastManager.getInstance(requireContext()) + .sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java index b125385a6..7775ad7ba 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/BlacklistStore.java @@ -26,6 +26,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.os.Environment; import androidx.annotation.NonNull; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import java.io.File; import java.util.ArrayList; @@ -155,7 +156,7 @@ public class BlacklistStore extends SQLiteOpenHelper { } private void notifyMediaStoreChanged() { - context.sendBroadcast(new Intent(MEDIA_STORE_CHANGED)); + LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(MEDIA_STORE_CHANGED)); } @NonNull diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index 94d4a4d4e..77cabfc87 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -42,6 +42,7 @@ import androidx.core.content.ContextCompat import androidx.core.content.edit import androidx.core.content.getSystemService import androidx.core.os.BundleCompat +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.media.MediaBrowserServiceCompat import androidx.preference.PreferenceManager import code.name.monkey.appthemehelper.util.VersionUtils @@ -287,8 +288,12 @@ class MusicService : MediaBrowserServiceCompat(), setupMediaSession() uiThreadHandler = Handler(Looper.getMainLooper()) - ContextCompat.registerReceiver(this, widgetIntentReceiver, IntentFilter(APP_WIDGET_UPDATE), ContextCompat.RECEIVER_NOT_EXPORTED) - ContextCompat.registerReceiver(this, updateFavoriteReceiver, IntentFilter(FAVORITE_STATE_CHANGED), ContextCompat.RECEIVER_NOT_EXPORTED) + LocalBroadcastManager.getInstance(this).registerReceiver( + widgetIntentReceiver, IntentFilter(APP_WIDGET_UPDATE) + ) + LocalBroadcastManager.getInstance(this).registerReceiver( + updateFavoriteReceiver, IntentFilter(FAVORITE_STATE_CHANGED) + ) registerReceiver(lockScreenReceiver, IntentFilter(Intent.ACTION_SCREEN_ON)) sessionToken = mediaSession?.sessionToken notificationManager = getSystemService() @@ -318,8 +323,8 @@ class MusicService : MediaBrowserServiceCompat(), } override fun onDestroy() { - unregisterReceiver(widgetIntentReceiver) - unregisterReceiver(updateFavoriteReceiver) + LocalBroadcastManager.getInstance(this).unregisterReceiver(widgetIntentReceiver) + LocalBroadcastManager.getInstance(this).unregisterReceiver(updateFavoriteReceiver) unregisterReceiver(lockScreenReceiver) if (headsetReceiverRegistered) { unregisterReceiver(headsetReceiver) @@ -837,7 +842,8 @@ class MusicService : MediaBrowserServiceCompat(), fun toggleFavorite() { serviceScope.launch { toggleFavorite(currentSong) - sendBroadcast(Intent(FAVORITE_STATE_CHANGED)) + LocalBroadcastManager.getInstance(this@MusicService) + .sendBroadcast(Intent(FAVORITE_STATE_CHANGED)) } } @@ -1311,7 +1317,7 @@ class MusicService : MediaBrowserServiceCompat(), } private fun sendChangeInternal(what: String) { - sendBroadcast(Intent(what)) + LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(what)) appWidgetBig.notifyChange(this, what) appWidgetClassic.notifyChange(this, what) appWidgetSmall.notifyChange(this, what)