2014-06-05 1 views
0

Je développe une application pour Android.
J'utilise Samsung Galaxy S3 avec ROM Jelly Bean d'origine 4.3.Comment annuler l'enregistrement des appels entrants et des récepteurs d'appels sortants?

J'ai un problème avec les récepteurs des appels entrants et sortants.

Voici le code de 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; 
     } 
    } 
} 

Toutefois, ce n'est pas le problème, ce code fonctionne et aussi le récepteur d'appel sortant fonctionne parfaitement.

Mon problème est que lorsque je quitte l'application, ces récepteurs fonctionnent toujours.

Il est arrivé que, quelques jours après la dernière fois que j'ai ouvert l'application, j'ai reçu un appel téléphonique et l'application s'est écrasée.

Je pense qu'il est arrivé parce que je Recopiez le code:

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

parce que début (ma première activité) n'existe pas.

Je n'enregistre jamais ce récepteur, ils fonctionnent sans que je les "appelle".
Je ne sais pas si je dois me désinscrire et au cas où je devrais le faire.

Alors, quelqu'un peut-il m'aider s'il vous plaît?

Andrea

+0

Le récepteur de l'intention est-il enregistré dans votre AndroidManifest ou lors de l'exécution? –

+0

@Dans Oui, je déclare les deux récepteurs sur le manifeste et ils fonctionnent parfaitement. – andrea92

Répondre

0

Lors de la déclaration d'un récepteur BroadcastReceiver ou autre Intent dans votre AndroidManifest il est toujours "sur". Déplacez l'inscription et la désinscription au début et à la fin de l'exécution de votre application, ou à d'autres moments dans votre application; alors vous serez en mesure de contrôler quand il est activé à l'exécution.

+0

merci. très bon. – andrea92

Questions connexes