【发布时间】:2023-12-19 23:43:01
【问题描述】:
我想在 android 中获取传入的电话号码。我尝试过使用 BroadcastListener,我的 Broadcastlistener 看起来像这样..
public class InterceptCall extends BroadcastReceiver {
public int cnt = 0;
public int cnt2 = 0;
TelephonyManager telephony;
@Override
public void onReceive(final Context context, final Intent intent) {
if(telephony != null)return;
telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
String state1 = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state1.equals(TelephonyManager.EXTRA_STATE_RINGING) && state == 1) {
Toast.makeText(context, "Ringing - " + cnt, Toast.LENGTH_SHORT).show();
cnt++;
System.out.println("incomingNumber : " + cnt + " " + incomingNumber);
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
}
}
这提供了正确的号码,但问题是当任何新呼叫响铃时,以前的号码总是显示在 toast 中。例如,如果三个电话接连打来,第三次会有 3 条 toast 消息。我该如何解决这个问题?
【问题讨论】:
标签: android broadcastreceiver telephonymanager