Служба подключения Android, вызов запрещенJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Служба подключения Android, вызов запрещен

Сообщение Anonymous »


Я реализую службу подключения в мобильном приложении VoIP. После некоторого использования приложения и создания вызовов с помощью PlaceCall или addNewIncomingCall создание новых вызовов становится невозможным, но после перезапуска приложения некоторое время все снова работает. После вызова любого из упомянутых методов в logcat я имею следующее:

2023-10-19 15:13:47.363 23963-23963 TelecomFramework I: createConnectionFailed TC@270: (TSI.pC->CIP.sNOCI)->CS.crCoF->H.CS.crCoF( актерский состав)@E-Kdk 2023-10-19 15:13:47.364 23963-23963 TelecomFramework I TelecomConnectionService: createConnectionFailed TC@270: (TSI.pC->CIP.sNOCI)->CS.crCoF->H.CS.crCoF(cast)@E- КДК isIncomingCallPermit и isOutgoingCallPermited возвращают false. Согласно документации, false возвращается в случаях:
[*]У PhoneAccount не установлено свойство PhoneAccount#CAPABILITY_SELF_MANAGED (т. е. это управляемая служба ConnectionService), и достигнут лимит активных или удерживаемых вызовов. [*]Текущий вызов службы экстренной помощи.
Я создаю учетную запись телефона таким образом, как вы можете видеть, что установлен флаг CAPABILITY_SELF_MANAGED. В любом случае поначалу все работает правильно.

private static PhoneAccount createAccount(Context context) { ИмяКомпонентаИмяКомпонента = новое ИмяКомпонента(context.getPackageName(), TelecomConnectionService.class.getName()); PhoneAccountHandle accountHandle = новый PhoneAccountHandle(comComponentName, context.getPackageName()); Строковая идентичность = "sip:app@example.com"; Адрес Uri = Uri.parse(identity); Дополнения к пакету = новый Bundle(); extras.putBoolean(PhoneAccount.EXTRA_SUPPORTS_HANDOVER_TO, true); extras.putBoolean(PhoneAccount.EXTRA_LOG_SELF_MANAGED_CALLS, true); extras.putBoolean(PhoneAccount.EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE, true); PhoneAccount.Builder builder = PhoneAccount.builder(accountHandle, context.getPackageName()) .addSupportedUriScheme(PhoneAccount.SCHEME_SIP) .setAddress(адрес) .setCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED) .setExtras(дополнительные); вернуть builder.build(); } Я прерываю соединения, вызывая метод destroyConnection в onStateChanged, когда состояние равно Connection.STATE_DISCONNECTED

Реализация destroyConnection:

public void DestroyConnection() { Log.d(TAG, "destroyConnection"); TelecomConnectionService.destroyCurrentConnection(); супер.уничтожить(); } и destroyCurrentConnection — это просто:

public static void DestroyCurrentConnection() { конн = ноль; } Есть идеи, что я делаю не так?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»