2016-03-30 23 views
0

Ich habe bereits versucht, nach meiner Antwort zu suchen, konnte aber nicht die spezifische Antwort erhalten, die ich überprüfte.Broadcast-Empfänger wird nicht jedes Mal aufgerufen

Problem: Ich versuche, einen Anruf Zustand ändern Empfänger zu machen. Ich habe Rundfunkempfänger in Manifest registriert und eine Empfängerklasse dafür gemacht. In seinem onReceive() habe ich einen PhonsStateListener registriert, um Änderungen des Anrufstatus zu hören. Wenn ich jetzt einen Anruf erhalte, wird onReceive() aufgerufen, und wenn die Verbindung getrennt wird, wird onReceive erneut ordnungsgemäß aufgerufen. Aber wenn ich den oben genannten Prozess erneut wiederholte, wird OnReceive() bei eingehenden Anruf, aber nicht beim Trennen dieses Anrufs aufgerufen.

Mein Manifest für Empfänger

 <receiver android:name=".CallReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/> 
     </intent-filter> 

Ich habe keine Ahnung, was in diesem falsch sein könnte. Das Problem ist onReceive() wird nicht beim Trennen des zweiten Anrufs aufgerufen. Bitte lassen Sie mich wissen, wenn ein anderer Code benötigt wird. Ich bin Überprüfung auf Note2 JellyBean 4.1.2

Antwort

0

Haben Sie diese in Ihre Manifest-Datei hinzufügen versucht:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Und vergessen Sie nicht zu unregisterReceiver() Ihre Sendung in Ihrer Aktivität:

@Override 
    protected void onDestroy() { 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(your_broadcast_name); 
     super.onDestroy(); 
    } 
+0

Ich kann die Verwendung von Wakelock-Erlaubnis hier nicht verstehen. Ich versuche nicht, irgendein Wakelock zu erwerben, und außerdem bekomme ich keine Sicherheitsausnahme. Außerdem kann ich nicht den Grund für die Registrierung des Empfängers verstehen. Dies ist auch ein Empfänger, so ist es auch möglich, dass ich meine Aktivität überhaupt nicht öffnen kann (also wird onDestroy nicht aufgerufen), aber trotzdem sollte der Empfänger gut funktionieren. –

0

Sie müssen möglicherweise die Erlaubnis erhalten:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

ja, es ist schon da. Daher bekomme ich es zum ersten Mal –

0

Vielen Dank für Ihre Meinung geteilt. Das Problem war mit dem Code des Rundfunkempfängers. Ich habe etwas falsch in der onReceive() -Methode gemacht, aufgrund dessen das Problem auf Systemebene aufgetreten ist und mein Prozess wurde getötet. Es funktionierte gut nach der Behebung dieses Problems.

+0

Dies sollte in Frage oder als Kommentar bearbeiten, anstatt es zu beantworten –

Verwandte Themen