gpt4 book ai didi

android - onReceive 被多次调用

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:35 26 4
gpt4 key购买 nike

我读了这篇文章:Broadcast receiver onReceive() getting called multiple times

但我没有找到所需的答案。

我创建了一个小实用函数,它覆盖了 BroadcastReceiver 的 onReceive() 并根据特定条件拒绝来电(效果很好)。

现在,一旦所有条件都匹配并且我拒绝了调用,我想将该号码存储在数据库中(这又是一项简单的任务)。一旦我拒绝来电,我想将号码保存在数据库中。但是在日志中我观察到一旦有来电,onReceive 函数就会被多次调用。如果是这种情况,我不想在我的数据库中有多个条目。

有什么方法可以只调用一次 onReceive() 吗?或者任何解决方法?

感谢您的帮助

最佳答案

您的接收器将在三种不同的状态下被调用:振铃、挂机和空闲状态。

在onReceive中检查电话状态。如果它的状态是响铃,你可能想切断电话并存储在数据库中。

public void onReceive(final Context context, Intent intent) {
Bundle bundle = intent.getExtras();

if (null == bundle) {
return;
}

String state = bundle.getString(TelephonyManager.EXTRA_STATE);

if (TelephonyManager.EXTRA_STATE_RINGING.equalsIgnoreCase(state)) {
//cut the call and store in db
return;
}


}
if(TelephonyManager.EXTRA_STATE_IDLE.equalsIgnoreCase(state)) {
return;
}
if(TelephonyManager.EXTRA_STATE_OFFHOOK.equalsIgnoreCase(state)){
return;
}

}

关于android - onReceive 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com