0

我正在制作一个 SIP 应用程序,除了一件事之外,我已经完成了我想要的几乎所有工作。发生 SIP 呼叫时,我无法启动活动。

我正在使用一个 SIP 库,该库启动一个“电话”服务,该服务处理来电等处理,当我创建一个“电话”实例时,我会注册监听器,详细说明我想要发生的事情。因此,为了处理来电,我注册了一个“OnIncommingCall”监听器。

如果应用程序当前未打开,我希望它启动应用程序。所以我的听众是:

thisPhone.setIncomingCallListener(new OnIncomingCallListener() 
    {
        public void OnIncomingCall(String remoteContact, int accountId)
        {
            if(MainActivity.this.getIsOpen())
            {
                MainActivity.this.setIsCallIncomming(true);
                MainActivity.this.setCurrentCaller(remoteContact);
                MainActivity.this.setMainUIEles();
            }
            else
            {
                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                i.putExtra("isCallIncomming", true);
                i.putExtra("currentCaller", remoteContact);
                i.putExtra("isRegistered", true);
                i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
       }
    }); //incoming call listener

但是,当来电时,它会响铃但应用程序不会打开,但是如果我在通话仍在响铃时从启动器打开应用程序,那么它将打开并知道通话在那里。

问题是因为我试图启动定义监听器的 Activity 吗?

我已经尝试了各种标志和组合(SINGLE_TOP 等),但我无法让它工作。

任何帮助,将不胜感激!

DJOodlen

4

1 回答 1

0

好吧,这对我来说是一个愚蠢的错误。

在放了一些祝酒词后,我可以看到代码中的每一位都在哪里,我意识到 getIsOpen() 永远不会返回 false。那是因为它没有在 onPause() 方法以及 onDestroy() 方法上被调用......

哎呀!

于 2012-08-13T14:42:50.127 回答