show a high priority notification when a device is in an interactive state

This commit is contained in:
Mysochenko Yuriy
2022-05-05 10:25:35 +03:00
parent c7c2d9108a
commit 5d3159ab34
3 changed files with 18 additions and 5 deletions

View File

@ -16,6 +16,7 @@ import com.simplemobiletools.commons.extensions.setVisibleIf
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.CallActivity
import com.simplemobiletools.dialer.extensions.powerManager
import com.simplemobiletools.dialer.receivers.CallActionReceiver
class CallNotificationManager(private val context: Context) {
@ -30,10 +31,11 @@ class CallNotificationManager(private val context: Context) {
CallManager.getCallContact(context.applicationContext) { callContact ->
val callContactAvatar = callContactAvatarHelper.getCallContactAvatar(callContact)
val callState = CallManager.getState()
val channelId = "simple_dialer_call"
val isHighPriority = context.powerManager.isInteractive && callState == Call.STATE_RINGING
val channelId = if (isHighPriority) "simple_dialer_call_high_priority" else "simple_dialer_call"
if (isOreoPlus()) {
val importance = NotificationManager.IMPORTANCE_DEFAULT
val name = "call_notification_channel"
val importance = if (isHighPriority) NotificationManager.IMPORTANCE_HIGH else NotificationManager.IMPORTANCE_DEFAULT
val name = if (isHighPriority) "call_notification_channel_high_priority" else "call_notification_channel"
NotificationChannel(channelId, name, importance).apply {
setSound(null, null)
@ -83,7 +85,7 @@ class CallNotificationManager(private val context: Context) {
val builder = NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_phone_vector)
.setContentIntent(openAppPendingIntent)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setPriority(if(isHighPriority) NotificationCompat.PRIORITY_MAX else NotificationCompat.PRIORITY_DEFAULT)
.setCategory(Notification.CATEGORY_CALL)
.setCustomContentView(collapsedView)
.setOngoing(true)
@ -92,6 +94,10 @@ class CallNotificationManager(private val context: Context) {
.setChannelId(channelId)
.setStyle(NotificationCompat.DecoratedCustomViewStyle())
if (isHighPriority) {
builder.setFullScreenIntent(openAppPendingIntent, true)
}
val notification = builder.build()
notificationManager.notify(CALL_NOTIFICATION_ID, notification)
}