playback: fix notification launch issue

Fix an accidental regression where PendingIntent.getBroadcast was
called for activities, causing the notification launch intent not
to work.
This commit is contained in:
OxygenCobalt 2021-08-01 19:24:08 -06:00
parent d50d2f0b1e
commit ffebbc2839
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 18 additions and 15 deletions

View file

@ -20,7 +20,6 @@ import org.oxycblt.auxio.ui.isNight
/**
* The single [AppCompatActivity] for Auxio.
* TODO: Port widgets to non-12 android
* TODO: Change how I handle lifecycle owners
* TODO: Fix intent issues
*/
class MainActivity : AppCompatActivity() {

View file

@ -30,12 +30,22 @@ class PlaybackNotification private constructor(
context: Context,
mediaToken: MediaSessionCompat.Token
) : NotificationCompat.Builder(context, CHANNEL_ID), PlaybackStateManager.Callback {
private val pendingIntentFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
PendingIntent.FLAG_IMMUTABLE
else 0
init {
val activityIntent = PendingIntent.getActivity(
context, REQUEST_CODE,
Intent(context, MainActivity::class.java),
pendingIntentFlags
)
setSmallIcon(R.drawable.ic_song)
setCategory(NotificationCompat.CATEGORY_SERVICE)
setShowWhen(false)
setSilent(true)
setContentIntent(newPendingIntent(context, Intent(context, MainActivity::class.java)))
setContentIntent(activityIntent)
setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
addAction(buildLoopAction(context, LoopMode.NONE))
@ -152,23 +162,15 @@ class PlaybackNotification private constructor(
): NotificationCompat.Action {
val action = NotificationCompat.Action.Builder(
iconRes, actionName,
newPendingIntent(context, Intent(actionName))
PendingIntent.getBroadcast(
context, REQUEST_CODE,
Intent(actionName), pendingIntentFlags
)
)
return action.build()
}
private fun newPendingIntent(context: Context, intent: Intent): PendingIntent {
return PendingIntent.getBroadcast(
context, REQUEST_CODE, intent,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.FLAG_IMMUTABLE
} else {
PendingIntent.FLAG_UPDATE_CURRENT
}
)
}
companion object {
const val CHANNEL_ID = "CHANNEL_AUXIO_PLAYBACK"
const val NOTIFICATION_ID = 0xA0A0

View file

@ -84,7 +84,9 @@ abstract class BaseWidget : AppWidgetProvider() {
android.R.id.background,
PendingIntent.getActivity(
context, 0xA0A0, Intent(context, MainActivity::class.java),
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
PendingIntent.FLAG_IMMUTABLE
else 0
)
)