#android #android-bluetooth
#Android #android-bluetooth
Вопрос:
У меня есть приложение, которое становится средством набора номера по умолчанию.
Он хорошо работает при входящих вызовах, отвечает и вешает трубку с помощью android.telecom
классов
Теперь, что я пытаюсь сделать, это, когда телефонная трубка Bluetooth набирает номер, остановить этот набор и запустить whatsapp dial uri с тем же номером.
Есть идеи, как отменить вызов, который набирается через телефонную трубку?
Комментарии:
1. Для получения этого события необходимо использовать широковещательный приемник
2. и как мне отменить вызов, как только я его получу
Ответ №1:
Вы можете использовать TelecomManager
класс для прерывания вызова.
TelecomManager telecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
if (telecomManager != null) {
if(telecomManager .endCall())
Toast(mContext,"Call ended",Toast.LENGTH_SHORT).show();
else
Toast(mContext,"Failed to end the call",Toast.LENGTH_SHORT).show();
}
Вам нужно разрешение
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
Разрешение получателя
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
Широковещательный приемник
public class OutgoingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(OutgoingCallReceiver.class.getSimpleName(), intent.toString());
Toast.makeText(context, "Outgoing call happening!", Toast.LENGTH_LONG).show();
// cancel your call here }
}
Манифест обновления
<receiver android:name=".OutGoingCallReceiver"
android:exported="true">
<intent-filter>
<action
android:name="android.intent.action.NEW_OUTGOING_CALL"
android:priority="0" />
</intent-filter>
</receiver>
Комментарии:
1. спасибо. Однако мне нужно отключить исходящий вызов, который поступает из динамика Bluetooth, и перенаправить его в WhatsApp. Будет ли это прослушивать исходящий вызов?
2. Хорошо, я попробую ваше решение и сообщу об этом. Спасибо
3. ваше решение отлично работало на sdk 26 , но телефон моего клиента 23, и мне нужно использовать другое решение, чем ANSWER_PHONE_CALLS. у вас есть какой-нибудь быстрый совет
4. Для этого есть класс ITelephony
5. поскольку этот ответ отличный, я добавлю еще один вопрос для Android 6.0.1