如何完成在BroadcastReceiver的活动onCallEnded() [英] How to finish activity in broadcastreceiver onCallEnded()
本文介绍了如何完成在BroadcastReceiver的活动onCallEnded()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个问题,如何完成在brodcastreceiver活动onCallEnded(SIP)。有一个brodcastreceiver这样的:
I have a question, how to finish activity in brodcastreceiver onCallEnded (SIP) . There is a brodcastreceiver like this:
public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SipAudioCall incomingCall = null;
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
...
@Override
public void onCallEnded(SipAudioCall call) {
// IncomingCallActivity.finish();
}
};
Main mainActivity = (Main) context;
incomingCall = mainActivity.manager.takeAudioCall(intent, listener);
mainActivity.call = incomingCall;
Intent i = new Intent(context, IncomingCallActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
然后开始新的活动来接听或拒绝来电,但如何在通话结束后关闭它?不能使用 IncomingCallActivity.finish()
在 onCallEnded
。
推荐答案
您可以做到这一点是这样的:
You can do it like this:
@Override
public void onCallEnded(SipAudioCall call) {
// IncomingCallActivity.finish();
//Here set any value like an int
intToClose = 1;
}
然后在活动检查的 intToClose
,如果1,则只需拨打 fnish();
then in your activity check for the intToClose
, if its 1 then just call fnish();
更新:此code是从我的脑海里,所以它可以有一定的误差。添加到您的当前活动,或者是这样的:
UPDATE: This code is from my mind, so it can have some errors. Add this to your current activity, or something like this:
scheduler = Executors.newSingleThreadScheduledExecutor ( );
scheduler.scheduleAtFixedRate ( new Runnable ( ) {
public void run ( )
{
runOnUiThread ( new Runnable ( ) {
public void run ( ) {
closeInt = IncomingCallReceiver.intToClose;
if ( closeInt == 1 ) {
scheduler.shutdown ( );
finish ( );
}
}
} );
}
}, 750, 750, TimeUnit.MILLISECONDS );
这篇关于如何完成在BroadcastReceiver的活动onCallEnded()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文