+-
Android – 从循环中停止NEW_OUTGOING_CALL事件?
我有一个BroadcastReceiver捕获ACTION_NEW_OUTGOING_CALL事件.

在onReceive()方法中,我将提供的数字发送到新的ListActivity,用户可以从列表中选择各种新的目标号码.

当用户从列表中选择一个新号码时,我就会在URI字段中使用新号码开始一个新的ACTION_CALL意图.或者,结果可能是原始数字.

无论新号码是什么,都必须立即拨打,不再进一步处理.

如何让BroadcastReceiver知道不应该再次处理这个结果数?

最佳答案
我通过在BroadcastReceiver中实现“Bypass Prefix”解决了这个问题.如果我的客户端应用程序想要直接调用一个数字,它只需在调用ACTION_CALL Intent之前预先设置前缀.

如果拨打的号码具有(硬编码)前缀,则BroadcastReceiver会剥离前缀并允许呼叫正常进行:

public void onReceive(Context context, Intent intent)
{
    String action = intent.getAction();
    if (Intent.ACTION_NEW_OUTGOING_CALL.equals(action)) {
        String number = getResultData();
        if (number.startsWith(BYPASS_PREFIX)) {
             setResultData(number.substring(BYPASS_PREFIX.length()));
        } else {
             // do additional processing
        }
    }
}

这一次解决了两个问题 – 这不仅会停止呼叫循环,还可以通过在电话簿条目中存储前缀来绕过特定号码的附加处理.

点击查看更多相关文章

转载注明原文:Android – 从循环中停止NEW_OUTGOING_CALL事件? - 乐贴网