2014-06-05 40 views
0

我正在开发Android应用程序。
我使用三星Galaxy S3与原始ROM Jelly Bean 4.3。如何注销来电和去电的接听者?

我有来电和去电的接收器有问题。

这里是IncomingCallReceiver的代码:

public void onReceive(Context context, Intent intent) { 
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
     if (Start.getMusicService().isPlaying()) { 
      pauseMusicService(); 

      isMusicPlaying = true; 
     } 
    } 
    else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
     if (isMusicPlaying){ 
      restartMusicService(); 
      isMusicPlaying = false; 
     } 
    } 
} 

然而,这是没有问题的,这个代码的工作,也传出呼叫接收器完美的作品。

我的问题是,当我退出应用程序这个接收器仍然工作。

事情发生了,在我上次打开应用程序的几天后,我收到一个电话,应用程序崩溃。

我认为,它的发生,因为我写的代码:

if (Start.getMusicService().isPlaying()) 

因为开始(我的第一个活动)不存在。

我从来没有注册这个接收器,他们的工作没有我“打电话”他们。
我不知道我是否必须取消注册,以防万一我必须这样做。

那么,任何人都可以帮助我吗?

安德烈

+0

Intent的接收器是在您的AndroidManifest还是在运行时注册的? –

+0

@丹斯是的,我声明两个接收器的清单,他们完美的工作。 – andrea92

回答

0

在声明中您AndroidManifest一个BroadcastReceiver或其他Intent接收它始终是“上”。将注册和取消注册移至应用程序执行的开始和结束时,或在应用程序中执行其他时间;那么你将能够在运行时控制它何时开启。

+0

谢谢。很好。 – andrea92