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

  • dalvikvm: Imansible trovare l'android di class. *
  • cordova inappbrowser e file di input
  • Callback di servizio remoto Android
  • Come creare un Observable da OnClick Event Android?
  • Android: Stringere le righe in TableLayout in modo programmato
  • Google Maps v2: Errore di authorization
  • Libreria di supporto per Android Link diretto per il download
  • Invio di un object a un servizio tramite intenti senza impegnarsi
  • Android parlando di gson streaming o android.util.jsonreader?
  • Il metodo getChildFragmentManager () non è definito
  • Attributi dello stesso nome in attrs.xml per visualizzazione personalizzata
  • Come modificare i tasti di scelta rapida di autocompletamento Control + Space in Eclipse per Android
  • 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.