我有一个BroadcastReceiver
捕捉ACTION_NEW_OUTGOING_CALL
事件.
在onReceive()
方法中,我将提供的号码发送给新的ListActivity
,用户可以从列表中选择各种新的目的地号码.
当用户从列表中选择一个新号码时,我就会ACTION_CALL
在URI字段中使用新号码开始一个新的意图.或者,结果可能是原始数字.
无论新号码是什么,都必须立即拨打,不再进一步处理.
我如何才能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
}
}
}
Run Code Online (Sandbox Code Playgroud)
这一次解决了两个问题 - 这不仅会停止呼叫循环,还可以通过在电话簿条目中存储前缀来绕过特定号码的附加处理.
归档时间: |
|
查看次数: |
2281 次 |
最近记录: |