Показать панель набора номера во время вызова — набор номера во время вызова — DTMF

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

Я пробовал следующее, но вместо этого начинается набор нового вызова (так же, как и ACTION_VIEW).

Intent dial = new Intent(Intent.ACTION_DIAL);
dial.setData(Uri.parse("tel:9"));
startActivity(dial);

Я предполагаю, что "тел:" запускает новую последовательность набора номера. Что мне, вероятно, нужно, так это показать панель набора номера во время вызова и имитировать нажатия клавиш.

Любой?

Изменить: я нашел этот вопрос Запуск действия InCallScreen, который заставляет меня думать, что мне нужно просто отправить событие keydown для «com.android.phone.InCallScreen», но я не уверен, как это сделать. Кроме того, это непосредственно связанная проблема, которая была (и остается) открытой в течение многих лет: http://code.google.com/p/android/issues/detail?id=1428


person MaXKilleR    schedule 12.04.2012    source источник
comment
Насколько я могу судить, в общедоступном API для этого нет функциональности. Были некоторые предлагаемые изменения в TelephonyManager для позволяют это, но они, кажется, застопорились.   -  person caseyburkhardt    schedule 01.12.2012


Ответы (1)


Неа. Это не tel:, который вызывает новый вызов, а тот факт, что вы создаете новый Intent, а затем запускаете startActivity(dial);

Подумайте, что это значит: вы начинаете совершенно новую активность, поэтому она не может взаимодействовать с активностью, связанной с телефоном, которую использует ваш предыдущий код.

Я думаю, что вы действительно пытаетесь сделать, это добавить номер в конец того, что вы набираете. Для этого вам нужно поместить весь свой номер плюс символ паузы (p) в данные URI и использовать ACTION_CALL. Код:

Intent dial = new Intent(Intent.ACTION_CALL);
dial.setData(Uri.parse("tel:7195555555ppp9"));
startActivity(dial);

Я сделал три паузы, вы должны настроить в зависимости от того, сколько времени это займет. В качестве альтернативы используйте символ ожидания (w), но для этого требуется подтверждение от пользователя для отправки дополнительных цифр.

person NH.    schedule 01.12.2012