TelephonyManager.CALL_STATE_IDLE ruft mehr als einmal
Habe ich eine Klasse, die ein listener-der Telefon-Anruf-Zustand. in diesem, wenn der Anruf unterbrochen wird diese Linie,
case TelephonyManager.CALL_STATE_IDLE:
Log.e(TAG, "CALL_STATE_IDLE");
break;
ausführt, mehr als einmal. dies wirkt sich auf meine Anforderung schlecht. helfen Sie mir bitte, wenn jemand kennt dieses Problem.
vielen Dank im Voraus
public class IncomingCallListener extends BroadcastReceiver
{
private Context mContext;
private static final String TAG = "CustomBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
mContext = context;
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
Bundle bundle = intent.getExtras();
String phoneNr= bundle.getString("incoming_number");
}
public class CustomPhoneStateListener extends PhoneStateListener
{
private static final String TAG = "CustomPhoneStateListener";
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
switch (state)
{
case TelephonyManager.CALL_STATE_RINGING:
if(!incomingNumber.equalsIgnoreCase(""))
{
Log.e(TAG, "CALL_STATE_RINGING");
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.e(TAG, "CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.e(TAG, "CALL_STATE_IDLE");
break;
default:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihren Code wie:
switch case
stattif-else ladder
PhoneStateListener
nach Eingang broadcast alstelephony.listen(customPhoneListener, PhoneStateListener.LISTEN_NONE);
können Sie sehen, dieses tutorial androiddevblog.net/android/...onReceive
vonBroadcastReceiver
letzten Zeiletelephony.listen(customPhoneListener, PhoneStateListener.LISTEN_NONE);
Ich EIN wenig GEÄNDERT....und das funktioniert code...