Android 安卓系统-阻止新的呼出呼出事件循环?
我有一个Android 安卓系统-阻止新的呼出呼出事件循环?,android,listener,Android,Listener,我有一个BroadcastReceiver捕捉ACTION\u NEW\u outing\u CALL事件 在onReceive()方法中,我将提供的号码发送到一个新的ListActivity,用户可以从列表中选择各种新的目的地号码 当用户从列表中选择一个新号码时,我将在URI字段中使用新号码启动一个新的ACTION\u调用intent。或者,结果可能是原始数字 无论新号码是什么,都必须立即拨打,不再进行进一步处理 我如何才能让广播接收器知道这个结果数字不应该再被处理?我通过在我的广播接收器中实
BroadcastReceiver
捕捉ACTION\u NEW\u outing\u CALL
事件
在onReceive()
方法中,我将提供的号码发送到一个新的ListActivity
,用户可以从列表中选择各种新的目的地号码
当用户从列表中选择一个新号码时,我将在URI字段中使用新号码启动一个新的ACTION\u调用
intent。或者,结果可能是原始数字
无论新号码是什么,都必须立即拨打,不再进行进一步处理
我如何才能让
广播接收器
知道这个结果数字不应该再被处理?我通过在我的广播接收器
中实现一个“旁路前缀”来解决这个问题。如果我的客户端应用程序想要直接呼叫一个号码,它只需在调用ACTION\u 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
}
}
}
这一步解决了两个问题—不仅停止了呼叫循环,而且通过将前缀存储在电话簿条目中,我还可以绕过对特定号码的附加处理。广播接收器中的onReceive()方法将意图作为参数接收。
使用Intent.getExtras()从Intent中提取捆绑包。
此捆绑包包含3个键值对,如下所示:
通过检查拨号号码末尾的星号(*),可以推断onReceive()方法是第一次调用还是下一次调用。嗨,Alnitak,我在HTC Hero上遇到了一个主要问题,我使用setResultData(null)来阻止呼叫,但它似乎无法正确阻止呼叫。它可以阻止它,但它会在“已使用的应用程序”屏幕中显示一个拨号图标(按住home键),当你点击它时,它会再次尝试呼叫,然后消失,你遇到过类似的情况吗?在香草安卓系统中运行良好,但在HTC英雄上有重大问题的人没有英雄。它们的特殊shell也可能以比应用程序更高的优先级拦截出站调用尝试。尝试更改广播接收器的优先级。但通过此操作,我无法阻止特定号码的通话