Вызов с использованием индекса SIM-карты в Android, уровень API 31, Android 12JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Вызов с использованием индекса SIM-карты в Android, уровень API 31, Android 12

Сообщение Гость »


У меня есть сценарий, в котором я хочу позвонить кому-нибудь без участия человека, Я отправляю номер телефона и индекс слота для SIM-карты с помощью сокета. Если SIM-карта по умолчанию не выбрана, Android показывает мне всплывающее окно выбора SIM-карты, но если выбран SIM-карта по умолчанию, он будет звонить через SIM-карту по умолчанию.

Но я хочу звонить через любую SIM-карту.

Тот же подход работает для SMS, но не для телефонных звонков

Вот мой код.

@ReactMethod public void makeCallWithSim(int simSlotIndex, String phoneNumber, обратный вызов) { Контекст контекста = getReactApplicationContext(); TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); если (telephonyManager == null) { // TelephonyManager недоступен, обработать ошибку если (обратный вызов!= ноль) { callback.invoke("TelephonyManager недоступен."); } возвращаться;
SubscriptionManager subscribeManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); если (subscriptionManager == null) { // SubscriptionManager недоступен, обработать ошибку если (обратный вызов!= ноль) { callback.invoke("Менеджер подписки недоступен."); } возвращаться; } // Получаем активные подписки List activeSubscriptions = subscribeManager.getActiveSubscriptionInfoList(); if (activeSubscriptions == null || activeSubscriptions.isEmpty()) { // Активные подписки не найдены, обрабатываем ошибку если (обратный вызов!= ноль) { callback.invoke("Активные подписки не найдены."); } возвращаться; } // Проверяем, поддерживает ли устройство несколько SIM-карт если (activeSubscriptions.size() < 2) { // Устройство не поддерживает несколько SIM-карт // Используем для звонка SIM-карту по умолчанию Log.d("Информация", "В ЕСЛИ"); Uri uri = Uri.parse("tel:" + phoneNumber); Намерение callIntent = новое намерение (Intent.ACTION_CALL, uri); callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (callIntent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(callIntent); если (обратный вызов!= ноль) { обратный вызов.вызов(); // Вызов успешно инициирован } } еще { если (обратный вызов!= ноль) { callback.invoke("Ошибка: не найдено действий для обработки намерения вызова."); } } } еще { Log.d("Информация", "В ЕЩЕ"); // Получаем идентификатор подписки для данного слота SIM // SubscriptionInfo subscribeInfo = activeSubscriptions.get(simSlotIndex); SubscriptionInfo subscribeInfo = subscribeManager.getActiveSubscriptionInfoForSimSlotIndex(simSlotIndex); int подпискаId = подпискаInfo.getSubscriptionId(); // Устанавливаем идентификатор подписки на SIM-карту для звонка telephonyManager = telephonyManager.createForSubscriptionId(subscriptionId); // Совершаем вызов с использованием указанной SIM-карты Uri uri = Uri.parse("tel:" + phoneNumber); Намерение callIntent = новое намерение (Intent.ACTION_CALL, uri); callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (callIntent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(callIntent); если (обратный вызов!= ноль) { обратный вызов.вызов(); // Вызов успешно инициирован } } еще { если (обратный вызов!= ноль) { callback.invoke("Ошибка: не найдено действий для обработки намерения вызова."); } } } }
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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