mirror of
https://github.com/home-assistant/android
synced 2024-10-01 13:53:53 +00:00
mobile_app_notification_cleared for wearos (#4035)
* mobile_app_notification_cleared for wearos * Fix imports * Remove database id extra * Fix whitespace * Reformatted imports and added the receiver to the manifest * Move `handleDeleteIntent` to common
This commit is contained in:
parent
17f86efd18
commit
6b56bc579a
|
@ -871,11 +871,6 @@
|
|||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
<receiver
|
||||
android:name=".notifications.NotificationDeleteReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -56,6 +56,7 @@ import io.homeassistant.companion.android.common.notifications.createChannelID
|
|||
import io.homeassistant.companion.android.common.notifications.getGroupNotificationBuilder
|
||||
import io.homeassistant.companion.android.common.notifications.handleChannel
|
||||
import io.homeassistant.companion.android.common.notifications.handleColor
|
||||
import io.homeassistant.companion.android.common.notifications.handleDeleteIntent
|
||||
import io.homeassistant.companion.android.common.notifications.handleSmallIcon
|
||||
import io.homeassistant.companion.android.common.notifications.handleText
|
||||
import io.homeassistant.companion.android.common.notifications.parseColor
|
||||
|
@ -935,7 +936,7 @@ class MessagingManager @Inject constructor(
|
|||
|
||||
handleReplyHistory(notificationBuilder, data)
|
||||
|
||||
handleDeleteIntent(notificationBuilder, data, messageId, group, groupId, id)
|
||||
handleDeleteIntent(context, notificationBuilder, data, messageId, group, groupId, id)
|
||||
|
||||
handleContentIntent(notificationBuilder, data)
|
||||
|
||||
|
@ -1033,29 +1034,6 @@ class MessagingManager @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun handleDeleteIntent(
|
||||
builder: NotificationCompat.Builder,
|
||||
data: Map<String, String>,
|
||||
messageId: Int,
|
||||
group: String?,
|
||||
groupId: Int,
|
||||
databaseId: Long?
|
||||
) {
|
||||
val deleteIntent = Intent(context, NotificationDeleteReceiver::class.java).apply {
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_DATA, HashMap(data))
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP, group)
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP_ID, groupId)
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_DB, databaseId)
|
||||
}
|
||||
val deletePendingIntent = PendingIntent.getBroadcast(
|
||||
context,
|
||||
messageId,
|
||||
deleteIntent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
builder.setDeleteIntent(deletePendingIntent)
|
||||
}
|
||||
|
||||
private fun handlePersistent(
|
||||
builder: NotificationCompat.Builder,
|
||||
tag: String?,
|
||||
|
|
|
@ -11,6 +11,11 @@
|
|||
<action android:name="io.homeassistant.companion.android.UPDATE_SENSORS" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver
|
||||
android:name=".notifications.NotificationDeleteReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -1,4 +1,4 @@
|
|||
package io.homeassistant.companion.android.notifications
|
||||
package io.homeassistant.companion.android.common.notifications
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
|
@ -2,7 +2,9 @@ package io.homeassistant.companion.android.common.notifications
|
|||
|
||||
import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.PorterDuff
|
||||
import android.graphics.PorterDuffColorFilter
|
||||
|
@ -290,3 +292,27 @@ fun clearNotification(context: Context, tag: String) {
|
|||
val messageId = tag.hashCode()
|
||||
notificationManagerCompat.cancel(tag, messageId, true)
|
||||
}
|
||||
|
||||
fun handleDeleteIntent(
|
||||
context: Context,
|
||||
builder: NotificationCompat.Builder,
|
||||
data: Map<String, String>,
|
||||
messageId: Int,
|
||||
group: String?,
|
||||
groupId: Int,
|
||||
databaseId: Long?
|
||||
) {
|
||||
val deleteIntent = Intent(context, NotificationDeleteReceiver::class.java).apply {
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_DATA, HashMap(data))
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP, group)
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP_ID, groupId)
|
||||
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_DB, databaseId)
|
||||
}
|
||||
val deletePendingIntent = PendingIntent.getBroadcast(
|
||||
context,
|
||||
messageId,
|
||||
deleteIntent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
builder.setDeleteIntent(deletePendingIntent)
|
||||
}
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -14,6 +14,7 @@ import io.homeassistant.companion.android.common.notifications.commandBeaconMoni
|
|||
import io.homeassistant.companion.android.common.notifications.commandBleTransmitter
|
||||
import io.homeassistant.companion.android.common.notifications.getGroupNotificationBuilder
|
||||
import io.homeassistant.companion.android.common.notifications.handleChannel
|
||||
import io.homeassistant.companion.android.common.notifications.handleDeleteIntent
|
||||
import io.homeassistant.companion.android.common.notifications.handleSmallIcon
|
||||
import io.homeassistant.companion.android.common.notifications.handleText
|
||||
import io.homeassistant.companion.android.common.util.TextToSpeechData
|
||||
|
@ -116,6 +117,8 @@ class MessagingManager @Inject constructor(
|
|||
|
||||
handleText(notificationBuilder, data)
|
||||
|
||||
handleDeleteIntent(context, notificationBuilder, data, messageId, group, groupId, null)
|
||||
|
||||
notificationManagerCompat.apply {
|
||||
Log.d(TAG, "Show notification with tag \"$tag\" and id \"$messageId\"")
|
||||
notify(tag, messageId, notificationBuilder.build())
|
||||
|
|
Loading…
Reference in a new issue