0

Wir können leicht erkennen, ob der Benutzer angerufen wird oder nicht. Ich muss einen Filter hinzufügen, d. H. Hat der Benutzer einen Anruf an eine bestimmte Nummer getätigt? Ist es möglich?Wie erkennen Sie ausgehende Anrufe in Android zu einer bestimmten Nummer?

+0

Vielleicht Sie können meinen Code [hier] auschecken (https://github.com/xdtianyu/CallerInfo/blob/ master/app/src/main/java/org/xdty/anruferinfo/receiver/IncomingCall.java # L46) – tianyu

Antwort

0

Erstellen Sie eine BroadcastReceiver-Klasse, und registrieren Sie sie in der Manifestdatei. Und überprüfen Sie die ausgehende Anrufabsicht.

Ex:

public class DialCallListener extends BroadcastReceiver { 
private static final String OUTGOING_CALL_INTENT = "android.intent.action.NEW_OUTGOING_CALL"; 

//Inside onReceive method, check the call state 
@Override 
public void onReceive(Context context, Intent intent) { 
    int callState = TelephonyManager.CALL_STATE_IDLE; 
    try { 
     String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); 

     //Check if call state is OFFHook 
     if (stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
      callState = TelephonyManager.CALL_STATE_OFFHOOK; 

      //Call the listener interface when call state change. And handle this state change inside PhoneListener class. 
    MyPhoneStateListener PhoneListener = new MyPhoneStateListener(context); 
    PhoneListener.onCallStateChanged(callState, number); 
     } 

    }catch (Exception err) { 
     err.printStackTrace(); 
    } 

} }

// Jetzt einen Listener erstellen, wenn Gesprächszustand (bei Wahl einer beliebigen Anzahl) geändert

private class MyPhoneStateListener extends PhoneStateListener implements ICallReceiver { 


public void onCallStateChanged(int state, String dialing_number) { 

     switch (state) { 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
       //Handle Call dial 
       mPresenter.handleCallOffHook(incomingNumber); 
       break; 
     } 

} }

Verwandte Themen