Jak programowo odebrać połączenie w systemie Android 4.0.3?

Tak jak wymaga tego temat, muszę być w stanie programowo odbierać połączenia telefoniczne w systemie Android 4.0.3 w telefonie HTC OneX. Przeczytałem kilka miejsc, któreMODIFY_PHONE_STATE zezwolenie zostało cofnięte przez Google, więc aby wykonać to zadanie, potrzebujesz obejścia.

Dotychczas przeanalizowałem dwie możliwości:

(1) Śledzenie postu Guy'atutaj i za pomocą odbiornika BroadcastReceiver

(2) Użycie poniższego kodu do próby uderzenia w zdarzenie klucza za pomocą polecenia powłoki.

final Runtime r = Runtime.getRuntime();
    try {
        Process process = r.exec("input keyevent 5");
        InputStream stream = process.getErrorStream();
        log.v("Process Error Stream: " +stream.toString());
        log.v("Sending shell command to Answer Call");
    } catch (Exception e) {
        log.v("Stack Trace: " + e.getStackTrace().toString());
        e.printStackTrace();
    } 

Używam tego, ponieważ keyevent 5 to KeyEvent.CALL według Google i działa w adb przy użyciu

adb shell input keyevent 5

Moje pytanie brzmi: co robię źle? Ponieważ logicznie obie te metody mają sens, ale ani nie działają, ani nawet nie generują błędów w czasie wykonywania.

Twoje zdrowie

questionAnswers(3)

yourAnswerToTheQuestion