offer incoming call when clicking on the notification

This commit is contained in:
adbenitez 2025-09-26 18:00:06 +02:00
parent 7e3e35a9a1
commit 3479233f82

View file

@ -164,7 +164,7 @@ public class NotificationCenter {
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE()); return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE());
} }
public PendingIntent getAnswerIntent(ChatData chatData, int callId, String payload) { public PendingIntent getOpenCallIntent(ChatData chatData, int callId, String payload, boolean autoAccept) {
final Intent chatIntent = new Intent(context, ConversationActivity.class) final Intent chatIntent = new Intent(context, ConversationActivity.class)
.putExtra(ConversationActivity.ACCOUNT_ID_EXTRA, chatData.accountId) .putExtra(ConversationActivity.ACCOUNT_ID_EXTRA, chatData.accountId)
.putExtra(ConversationActivity.CHAT_ID_EXTRA, chatData.chatId) .putExtra(ConversationActivity.CHAT_ID_EXTRA, chatData.chatId)
@ -173,13 +173,13 @@ public class NotificationCenter {
String base64 = Base64.encodeToString(payload.getBytes(StandardCharsets.UTF_8), Base64.NO_WRAP); String base64 = Base64.encodeToString(payload.getBytes(StandardCharsets.UTF_8), Base64.NO_WRAP);
String hash = ""; String hash = "";
try { try {
hash = "#acceptCall=" + URLEncoder.encode(base64, "UTF-8"); hash = (autoAccept? "#acceptCall=" : "#offerIncomingCall=") + URLEncoder.encode(base64, "UTF-8");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
Log.e(TAG, "Error", e); Log.e(TAG, "Error", e);
} }
Intent intent = new Intent(context, VideochatActivity.class); Intent intent = new Intent(context, VideochatActivity.class);
intent.setAction(Intent.ACTION_VIEW); intent.setAction(autoAccept? Intent.ACTION_ANSWER : Intent.ACTION_VIEW);
intent.putExtra(VideochatActivity.EXTRA_ACCOUNT_ID, chatData.accountId); intent.putExtra(VideochatActivity.EXTRA_ACCOUNT_ID, chatData.accountId);
intent.putExtra(VideochatActivity.EXTRA_CHAT_ID, chatData.chatId); intent.putExtra(VideochatActivity.EXTRA_CHAT_ID, chatData.chatId);
intent.putExtra(VideochatActivity.EXTRA_CALL_ID, callId); intent.putExtra(VideochatActivity.EXTRA_CALL_ID, callId);
@ -434,6 +434,7 @@ public class NotificationCenter {
String notificationChannel = getCallNotificationChannel(notificationManager, chatData, name); String notificationChannel = getCallNotificationChannel(notificationManager, chatData, name);
PendingIntent declineCallIntent = getDeclineCallIntent(chatData, callId); PendingIntent declineCallIntent = getDeclineCallIntent(chatData, callId);
PendingIntent openCallIntent = getOpenCallIntent(chatData, callId, payload, false);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, notificationChannel) NotificationCompat.Builder builder = new NotificationCompat.Builder(context, notificationChannel)
.setSmallIcon(R.drawable.icon_notification) .setSmallIcon(R.drawable.icon_notification)
@ -444,6 +445,8 @@ public class NotificationCenter {
.setOnlyAlertOnce(false) .setOnlyAlertOnce(false)
.setTicker(name) .setTicker(name)
.setContentTitle(name) .setContentTitle(name)
.setFullScreenIntent(openCallIntent, true)
.setContentIntent(openCallIntent)
.setContentText("Incoming Call"); .setContentText("Incoming Call");
builder.addAction( builder.addAction(
@ -456,7 +459,7 @@ public class NotificationCenter {
new NotificationCompat.Action.Builder( new NotificationCompat.Action.Builder(
R.drawable.baseline_call_24, R.drawable.baseline_call_24,
context.getString(R.string.answer_call), context.getString(R.string.answer_call),
getAnswerIntent(chatData, callId, payload)).build()); getOpenCallIntent(chatData, callId, payload, true)).build());
Bitmap bitmap = getAvatar(dcChat); Bitmap bitmap = getAvatar(dcChat);
if (bitmap != null) { if (bitmap != null) {