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
A
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;
}
} }
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