Rilevazione dell'evento di chiamata in output e di chiamata in android

Ho un requisito in cui voglio individuare due tipi di events legati alle chiamate in Android

  1. Ogni volta che viene effettuata una chiamata in output, la mia applicazione deve conoscere questo insieme con il numero chiamato
  2. Quando la chiamata viene bloccata (a causa di successo / fallimento), la mia applicazione dovrebbe conoscere questo insieme con il motivo di hangup

È ansible in Android? Sono nuovo alla piattaforma Android, quindi avrò bisogno di alcuni buoni tutorial dettagliati per guidarmi attraverso questo

  • Come impostare la data massima nella window di dialogo DataPicker in android?
  • Lo studio Android non elenca il mio telefono in "Scegli dispositivo"
  • Controllare se gli extra sono impostati o less
  • Android Row diventa Unclickable con il button
  • Come get tutti i nomi di tabella nel database sqlite android?
  • Come creare un file APK firmato utilizzando l'interface della row di command di Cordova?
  • Grazie

  • come call la function in strutture ioniche + angularjs?
  • Qualsiasi API di Android Market da Google?
  • Mostra voce del menu sempre nella barra di azione di supporto
  • Disegno del materiale non window di dialogo di allarme
  • Come get i valori di tutto EditText all'interno di un ListView
  • Errore anche se l'applicazione non è installata
  • 3 Solutions collect form web for “Rilevazione dell'evento di chiamata in output e di chiamata in android”

    È necessario creare un BroadcastReceiver:

    public class CallReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_RINGING)) { // Phone number String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); // Ringing state // This code will execute when the phone has an incoming call } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_OFFHOOK)) { // This code will execute when the call is answered or disconnected } } } 

    Devi registrarti l'applicazione per ascoltare queste intenzioni nel manifesto:

     <receiver android:name=".CallReciever" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> 

    C'è una soluzione più semplice utilizzando solo TelephonyManager e PhoneStateListener. Non dovrai neppure registrare un BroadcastReceiver.

     public class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { //Hangup case TelephonyManager.CALL_STATE_IDLE: break; //Outgoing case TelephonyManager.CALL_STATE_OFFHOOK: break; //Incoming case TelephonyManager.CALL_STATE_RINGING: break; } } } 

    E per registrarla:

     public static void registerListener(Context context) { ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); } 

    È necessario creare un ricevitore per le seguenti azioni intenti:

    1. Chiamata in output – ACTION_NEW_OUTGOING_CALL
    2. Call hangup – ACTION_PHONE_STATE_CHANGED
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.