2012-04-12 10 views
8

Chcę wybieranie numeru po tym jak odpowiedział na wezwanie, zwykle wykonywane przez Dialpad na wezwanie.Pokaż na wezwanie Dialpad - Wybieranie numeru podczas rozmowy - DTMF

Próbowałem następujących, ale to zaczyna wybieranie nowego połączenia zamiast (tak robi ACTION_VIEW).

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

Zgaduję, że "tel:" uruchamia nową sekwencję wybierania. To, czego prawdopodobnie potrzebuję, to pokazać panel wybierania połączeń i symulować uderzenia klawiszy.

Ktoś?

Edit: Znalazłem to pytanie Starting the InCallScreen activity który sprawia, że ​​myślę, że muszę po prostu wysłać do zdarzenia keydown „com.android.phone.InCallScreen”, ale nie jestem pewien, jak to zrobić. Jest to również bezpośrednio związany problem, który był (i nadal jest) otwarty przez wiele lat: http://code.google.com/p/android/issues/detail?id=1428

+0

O ile mi wiadomo, nie ma funkcjonalność w publicznych API dla tego produktu. Było kilka [proponowanych zmian] (https://groups.google.com/forum/#!msg/android-contrib/4QqHgLOrBO8/xXl9221pv-kJ) do TelephonyManager, aby na to zezwolić, ale wydaje się, że zawiesiły się. – caseyburkhardt

Odpowiedz

0

Nie. To nie jest tel: wywołuje nowe wezwanie, ale raczej fakt, że tworzysz nowe intencje, a następnie uruchamiasz program startActivity (wybierania);

Pomyśl o tym, co to znaczy: Jesteś rozpoczynając nową działalność, więc nie może wchodzić w interakcje z działalnością telefonu związanych poprzednia kod jest używany.

Myślę, że jesteś naprawdę staramy się robić to dodać numer do końca co następnie wybierania numeru. Aby to zrobić, musisz umieścić cały swój numer plus znak pauzy (p) w danych URI i użyć ACTION_CALL. Kod:

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

Zrobiłem trzy pauzy, należy dostosować w zależności od czasu. Alternatywnie użyj znaku oczekiwania (w), ale wydaje się, że wymaga to potwierdzenia od użytkownika, aby wysłać dodatkowe cyfry.