Android - 阻止 NEW_OUTGOING_CALL 事件循环?

标签 android listener

我有一个 BroadcastReceiver 捕捉 ACTION_NEW_OUTGOING_CALL 事件。

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

当用户从列表中选择一个新号码时,我将在 URI 字段中使用新号码启动一个新的 ACTION_CALL Intent 。或者,结果可能是原始数字。

无论新号码是什么,都必须立即调用,不做任何处理。

我怎样才能让 BroadcastReceiver 知道不应再次处理这个结果数?

最佳答案

我通过在我的 BroadcastReceiver 中实现“绕过前缀”解决了这个问题。如果我的客户端应用程序想要直接调用一个号码,它只需在调用 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 事件循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/808645/

相关文章:

java - 我的Android程序无法运行,因为它看不到按钮点击功能。谁能帮我?

android - 如何从命令行自动接受 android 库许可证?

android - 如何从服务中检测 youtube 的 MediaPlayer 事件

Python事件监听器来检测正在运行的应用程序?

java - Java的 "this"中 ".addActionListener(this)"关键字指的是什么

java - 如何更改卡片 View 的背景颜色?

java - CameraX 相机核心 :1. 0.0-beta01 在 Camera2Config.java defaultConfig() 处崩溃

android - startActivityForResult() 调用其他应用时立即调用 OnActivityResult

Java Swing : Clear JList without triggering listener

c++ - 通过模板的监听器模式,如何在不指定模板参数的情况下使用模板类?由 小码哥发布于