diff --git a/src/cheogram/java/com/cheogram/android/ConnectionService.java b/src/cheogram/java/com/cheogram/android/ConnectionService.java index a0239960d..2df333ce4 100644 --- a/src/cheogram/java/com/cheogram/android/ConnectionService.java +++ b/src/cheogram/java/com/cheogram/android/ConnectionService.java @@ -68,8 +68,17 @@ public class ConnectionService extends android.telecom.ConnectionService { } }; + private PermissionManager mPermissionManager; + @Override public void onCreate() { + mPermissionManager = PermissionManager.getInstance(this); + mPermissionManager.setNotificationSettings( + new NotificationSettings.Builder() + .withMessage(R.string.microphone_permission_for_call) + .withSmallIcon(R.drawable.ic_notification).build() + ); + // From XmppActivity.connectToBackend Intent intent = new Intent(this, XmppConnectionService.class); intent.setAction("ui"); @@ -115,16 +124,9 @@ public class ConnectionService extends android.telecom.ConnectionService { Jid with = Jid.ofLocalAndDomain(tel, gateway[1]); CheogramConnection connection = new CheogramConnection(account, with, postDial); - PermissionManager permissionManager = PermissionManager.getInstance(this); - permissionManager.setNotificationSettings( - new NotificationSettings.Builder() - .withMessage(R.string.microphone_permission_for_call) - .withSmallIcon(R.drawable.ic_notification).build() - ); - Set permissions = new HashSet<>(); permissions.add(Manifest.permission.RECORD_AUDIO); - permissionManager.checkPermissions(permissions, new PermissionManager.PermissionRequestListener() { + mPermissionManager.checkPermissions(permissions, new PermissionManager.PermissionRequestListener() { @Override public void onPermissionGranted() { connection.setSessionId(xmppConnectionService.getJingleConnectionManager().proposeJingleRtpSession( diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index 2dd77ce91..6465ded8c 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -467,8 +467,8 @@ public class NotificationService { try { telecomManager.addNewIncomingCall(handle, callInfo); } catch (SecurityException e) { - // If the account is not registered or enabled, it could result in a security exception - // Just fall back to the built-in UI in this case. + // There *could* be race conditions where the account is not registered yet + // when an incoming call is already received Log.w(Config.LOGTAG, e); return false; }