Android - 从循环中停止NEW_OUTGOING_CALL事件?

Aln*_*tak 3 android listener

我有一个BroadcastReceiver捕捉ACTION_NEW_OUTGOING_CALL事件.

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

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

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

我如何才能BroadcastReceiver知道不应再次处理此结果编号?

Aln*_*tak 6

我通过在我的中实现"绕过前缀"来解决这个问题BroadcastReceiver.如果我的客户端应用程序想要直接调用数字,则只需在调用ACTION_CALLIntent 之前预先设置前缀.

如果拨打的号码具有(硬编码)前缀,则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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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