如何完成在BroadcastReceiver的活动onCallEnded()BroadcastReceiver、onCallEnded

由网友(骑着乌龟追兔子)分享简介:我有一个问题,如何完成在brodcastreceiver活动onCallEnded(SIP)。有一个brodcastreceiver这样的:I have a question, how to finish activity in brodcastreceiver onCallEnded (SIP) . There i...

我有一个问题,如何完成在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 );
阅读全文

相关推荐

最新文章