diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d65bb0045f..271f98561c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -54,6 +54,7 @@
+
@@ -298,6 +299,7 @@
= Build.VERSION_CODES.O_MR1) {
+ setShowWhenLocked(true)
+ setTurnScreenOn(true)
+ }
+ window.addFlags(
+ WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+ or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
+ or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+ or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
+ or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
volumeControlStream = AudioManager.STREAM_VOICE_CALL
if (intent.action == ACTION_ANSWER) {
diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java
index 00278c4ee5..61c126339d 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java
@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.notifications;
import android.annotation.TargetApi;
+import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt b/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt
index 971e60493e..c9fa02fe3e 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt
@@ -34,13 +34,14 @@ class CallNotificationBuilder {
val text = context.getString(R.string.CallNotificationBuilder_first_call_message)
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
- .setSound(null)
- .setSmallIcon(R.drawable.ic_baseline_call_24)
- .setContentIntent(pendingIntent)
- .setPriority(NotificationCompat.PRIORITY_HIGH)
- .setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title))
- .setContentText(text)
- .setStyle(NotificationCompat.BigTextStyle().bigText(text))
+ .setSound(null)
+ .setSmallIcon(R.drawable.ic_baseline_call_24)
+ .setContentIntent(pendingIntent)
+ .setPriority(NotificationCompat.PRIORITY_HIGH)
+ .setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title))
+ .setContentText(text)
+ .setStyle(NotificationCompat.BigTextStyle().bigText(text))
+ .setAutoCancel(true)
return builder.build()
}
@@ -53,11 +54,11 @@ class CallNotificationBuilder {
val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
- .setSound(null)
- .setSmallIcon(R.drawable.ic_baseline_call_24)
- .setContentIntent(pendingIntent)
- .setOngoing(true)
- .setPriority(NotificationCompat.PRIORITY_LOW)
+ .setSound(null)
+ .setSmallIcon(R.drawable.ic_baseline_call_24)
+ .setContentIntent(pendingIntent)
+ .setOngoing(true)
+ .setPriority(NotificationCompat.PRIORITY_LOW)
recipient?.name?.let { name ->
builder.setContentTitle(name)
@@ -68,23 +69,7 @@ class CallNotificationBuilder {
builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting))
builder.priority = NotificationCompat.PRIORITY_LOW
}
- TYPE_INCOMING_PRE_OFFER -> {
- builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
- .setCategory(NotificationCompat.CATEGORY_CALL)
- builder.addAction(getServiceNotificationAction(
- context,
- WebRtcCallService.ACTION_DENY_CALL,
- R.drawable.ic_close_grey600_32dp,
- R.string.NotificationBarManager__deny_call
- ))
- builder.addAction(getActivityNotificationAction(
- context,
- WebRtcCallActivity.ACTION_PRE_OFFER,
- R.drawable.ic_phone_grey600_32dp,
- R.string.NotificationBarManager__answer_call
- ))
- builder.priority = NotificationCompat.PRIORITY_HIGH
- }
+ TYPE_INCOMING_PRE_OFFER,
TYPE_INCOMING_RINGING -> {
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
.setCategory(NotificationCompat.CATEGORY_CALL)
@@ -94,9 +79,12 @@ class CallNotificationBuilder {
R.drawable.ic_close_grey600_32dp,
R.string.NotificationBarManager__deny_call
))
+ builder.setFullScreenIntent(getFullScreenPendingIntent(
+ context
+ ), true)
builder.addAction(getActivityNotificationAction(
context,
- WebRtcCallActivity.ACTION_ANSWER,
+ if (type == TYPE_INCOMING_PRE_OFFER) WebRtcCallActivity.ACTION_PRE_OFFER else WebRtcCallActivity.ACTION_ANSWER,
R.drawable.ic_phone_grey600_32dp,
R.string.NotificationBarManager__answer_call
))
@@ -125,7 +113,6 @@ class CallNotificationBuilder {
return builder.build()
}
- @JvmStatic
private fun getServiceNotificationAction(context: Context, action: String, iconResId: Int, titleResId: Int): NotificationCompat.Action {
val intent = Intent(context, WebRtcCallService::class.java)
.setAction(action)
@@ -135,7 +122,12 @@ class CallNotificationBuilder {
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
}
- @JvmStatic
+ private fun getFullScreenPendingIntent(context: Context): PendingIntent {
+ val intent = Intent(context, WebRtcCallActivity::class.java)
+
+ return PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ }
+
private fun getActivityNotificationAction(context: Context, action: String,
@DrawableRes iconResId: Int, @StringRes titleResId: Int): NotificationCompat.Action {
val intent = Intent(context, WebRtcCallActivity::class.java)