diff --git a/src/cheogram/java/com/cheogram/android/ConnectionService.java b/src/cheogram/java/com/cheogram/android/ConnectionService.java index 89d00962a..1a31faa21 100644 --- a/src/cheogram/java/com/cheogram/android/ConnectionService.java +++ b/src/cheogram/java/com/cheogram/android/ConnectionService.java @@ -268,24 +268,7 @@ public class ConnectionService extends android.telecom.ConnectionService { xmppConnectionService.getJingleConnectionManager() .findJingleRtpConnection(account, with, sessionId); - // Request recording permission only when answering - Set permissions = new HashSet<>(); - permissions.add(Manifest.permission.RECORD_AUDIO); - mPermissionManager.checkPermissions(permissions, new PermissionManager.PermissionRequestListener() { - @Override - public void onPermissionGranted() { - if (rtpConnection == null || rtpConnection.get() == null) { - setDisconnected(new DisconnectCause(DisconnectCause.ERROR)); - } else { - rtpConnection.get().acceptCall(); - } - } - - @Override - public void onPermissionDenied(DeniedPermissions deniedPermissions) { - setDisconnected(new DisconnectCause(DisconnectCause.ERROR)); - } - }); + rtpConnection.get().acceptCall(); } @Override diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index 62baeccd5..b73eb4994 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -1,5 +1,6 @@ package eu.siacs.conversations.services; +import android.Manifest; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; @@ -8,6 +9,7 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Typeface; @@ -427,6 +429,12 @@ public class NotificationService { } private synchronized boolean tryRingingWithDialerUI(final AbstractJingleConnection.Id id, final Set media) { + if (mXmppConnectionService.checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { + // We cannot always request audio permission in Dialer UI + // e.g. when Dialer is shown over keyguard + return false; + } + if (media.size() != 1 || !media.contains(Media.AUDIO)) { // Currently our ConnectionService only handles single audio calls Log.w(Config.LOGTAG, "only audio calls can be handled by cheogram connection service");