Come rispondere in modo programmato a una chiamata?

Voglio rispondere a una telefonata. Ho trovato l'intento android.intent.action.ANSWER ma sembra che l'unico effetto che ottengo sia un ActivityNotFoundException. Perché? È un'intenzione deprecata? Come posso get la risposta? Ho anche sentito parlare della tecnica "telnet". Cos'è quello?

Grazie

  • Sostituzione di GCMBaseIntentService con GoogleCloudMessaging
  • Limitare la ricezione di Broadcast Android da app specifiche
  • Come allineare gli elementi di visualizzazione in Relativelayout dynamicmente tramite il codice in Android?
  • Come forzare la suddivisione della scheda ActionBar e del titolo / Home / Menu?
  • NoSuchFieldError: Nessun field statico MapAttrs di tipo quando si utilizza MapFragment con Play Services 6.5
  • Android - Anteprima della camera
  • Android System App 101
  • come sapere quale supporto telefonico che layout (hdpi, mdpi e xhpi)?
  • Come impostare background trasparente per il button Immagine nel codice?
  • ListView orizzontale come i cataloghi di Google
  • Android: Verifica se le cuffie sono collegate
  • Come impostare il valore predefinito di una listPreferenza
  • 8 Solutions collect form web for “Come rispondere in modo programmato a una chiamata?”

    Non è ansible controllare questo thread per ulteriori informazioni.

    è inoltre ansible submit chiavi di chiamata per rispondere alle chiamate, ma il dispositivo deve essere radicato

    rispondi alle chiamate:

     try { Thread.sleep(800); Process process = Runtime.getRuntime().exec(new String[]{ "su","-c","input keyevent 5"}); process.waitFor(); }catch (Exception e) { e.printStackTrace(); } 

    Chiudi le chiamate:

     try { Thread.sleep(800); Process process = Runtime.getRuntime().exec(new String[]{ "su","-c","input keyevent 6"}); process.waitFor(); }catch (Exception e) { e.printStackTrace(); } 

    È ansible rispondere a una chiamata telefonica in arrivo. Vedi questo: qui

    questa dose di events non funziona. si dovrebbe utilizzare:

     Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON); KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_HEADSETHOOK); i.putExtra(Intent.EXTRA_KEY_EVENT, event ); context.sendOrderedBroadcast(i, null); 

    che emulano un bhavior del tasto di printing.

    Questo funziona da Android 2.2 a 4.0 e ora dopo aver aggiunto il tentativo di cattura all'ultima row funziona per 4.1.2 e 4.2 Frankamente parlando non so come funziona, ma funziona per me.

      Log.d(tag, "InSecond Method Ans Call"); // froyo and beyond trigger on buttonUp instead of buttonDown Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent( KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED"); Intent headSetUnPluggedintent = new Intent(Intent.ACTION_HEADSET_PLUG); headSetUnPluggedintent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); headSetUnPluggedintent.putExtra("state", 0); headSetUnPluggedintent.putExtra("name", "Headset"); try { sendOrderedBroadcast(headSetUnPluggedintent, null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 

    Questo funziona per me in Android 4.1.2 così come ho testato su 4.2 Questo ancora offre un'exception che viene gestita.

    L'approccio utilizzato per simulare un porttile BT non funziona con tutte le versioni Android e con tutti i dispositivi come la gestione del porttile BT potrebbe essere diversa.

    L'approccio migliore verificato in molti dispositivi e nelle versioni Android consiste nell'emulare la pressione e il rilascio del button Chiamata nel Dialer:

     Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_CALL)); context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED"); // froyo and beyond trigger on buttonUp instead of buttonDown Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON); buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_CALL)); context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED"); 

    Potete farlo anche inviando il command Shell "input keyevent 5" tramite adb o via Runtime.exec, ma nel mio caso non funzionava per tutti i dispositivi

    L'intento di risposta deve essere inviato all'InCallScreen.

     adb shell am start -n com.android.phone/.InCallScreen -a android.intent.action.ANSWER 
     try { Runtime.getRuntime().exec("input keyevent"+Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK)); } catch (IOException e) { //handle error here } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.