【发布时间】:2013-01-22 14:31:53
【问题描述】:
在我的应用程序中,有一个功能可以在拨打某个号码(例如*123*)时结束拨出电话(并开始其他活动)
目前正在运行,但需要 200 毫秒的延迟。没有延迟,就无法接收到意图。
延迟导致多次屏幕闪烁的后果:
my activity shows -> switch to call -> end call -> switch back to my activity
public class OutgoingCallListener extends BroadcastReceiver {
// ...
public void onReceive(final Context context, Intent intent) {
// ...
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
// ...
if(number.equals("*123*")) {
// ...
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
telephonyService.endCall();
}
}, 200);
}
}
}
}
我见过其他具有这种特殊号码拨号功能的应用程序,呼叫立即结束,没有结束呼叫蜂鸣声,并切换到应用程序活动而不闪烁。
Q1:有谁知道如何立即结束通话?在ACTION_NEW_OUTGOING_CALL 之前我们可以捕捉到其他意图吗?
Q2:在配置较低的手机(CPU 速度慢、内存少)上,BroadcastReceiver 的工作方式是否与一部不错的手机相同?
【问题讨论】:
标签: android android-intent broadcastreceiver telephonymanager