2016-05-09 11 views
1

Ich erstelle eine einfache Alarme App und ich habe zwei broadcast receivers in AndroidManifest.xml registriert (One für den Empfang von Alarmen und andere für die Neuplanung sie beim Gerätestart). Nachdem ich einige Alarme geplant habe, starte ich mein Gerät neu und meine "OnBoot" receiver Umplanung der Alarme gut, aber der erste Empfänger empfängt sie nicht. Wenn ich meine App starte, einige Alarme einplane und sie nicht schließe, funktioniert der Empfänger einwandfrei, aber wenn ich die App schließe (nicht erzwinge) oder sie durch Drücken der Taste button in den Hintergrund sendet, empfängt der Empfänger keine Alarme! Ich habe es auf mehreren Geräten (HTC, Meizu, Samsung) getestet und habe das gleiche Problem. Es gibt nur einen Weg, den Empfänger normal arbeiten zu lassen, ist App zu töten, weil, nachdem ich es wieder begonnen habe, der Empfänger normal arbeitet, sogar App wird geschlossen, aber nachdem ich Gerät neu starte, werde ich dasselbe Problem bekommen. Bitte, kann mir jemand dabei helfen? Was muss ich tun, um dieses Problem zu lösen?Broadcast-Empfänger auf App geschlossen (oder im Hintergrund)

Ich versuchte fast alles (wechselnde pendingintent flags und request Codes, running receivers in Fern processes, ein intent-filters, extend von WakefulBroadcastReceiver und vielen anderen Einstellung), aber nichts hat mir geholfen.

Empfänger in AndroidManifest.xml

<receiver 
     android:name="com.gd.aiwnext.deal.Receivers.NotificationsReceiver" 
     android:enabled="true" 
     android:exported="true" 
     android:process=":nr"> 
     <intent-filter> 
      <action android:name="com.gd.action.intent.bri"></action> 
     </intent-filter> 
    </receiver> 

    <receiver 
     android:name="com.gd.aiwnext.deal.Receivers.NotificationBootReceiver" 
     android:process=":nbr"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 

BroadcastReceiver

public class NotificationsReceiver extends WakefulBroadcastReceiver { 

SQLiteDatabase NoteDataBase; 
NotesDataBase notesDataBase; 
String OLDDATE, NEWDATE, INTPICKER, OLDTIME, NEWTIME; 
String NewYear, NewMonth, NewDay, NewHour, NewMinute; 
long CurrentTimeInMillis, FutureTimeInMillis; 
Boolean StartAfterSleep; 

String FinalHour = "", FinalMinute = "", FinalYear = "", FinalMonth = "", FinalDay = ""; 
boolean isDivided = false; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d("BLL","Simple"); 
    int id = intent.getIntExtra("id", 1); 
    String note = intent.getStringExtra("note"); 
    String interval = intent.getStringExtra("interval"); 
    OLDDATE = intent.getStringExtra("date"); 
    OLDTIME = intent.getStringExtra("time"); 
    INTPICKER = intent.getStringExtra("intpicker"); 
    CurrentTimeInMillis = intent.getLongExtra("timeinmillis", 0); 
    if (intent.hasExtra("startaftersleep")) { 
     StartAfterSleep = (intent.getBooleanExtra("startaftersleep", false)); 
    } else { 
     StartAfterSleep = false; 
    } 
    CreateNotification(id, note, interval, context); 
} 

Ich benutze CreateNotification() -Methode Benachrichtigungen und Datenbank zu senden Datum und Uhrzeit des Alarms zu aktualisieren.

Erstellen von Alarmen

Intent intent = new Intent("com.gd.action.intent.bri"); 

Danach habe ich etwas mehr, und

PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), IdCount, intent, PendingIntent.FLAG_ONE_SHOT); 
alarmManager.setExact(AlarmManager.RTC_WAKEUP, FutureTimeMillis, pendingIntent); 
+0

versuchen android entfernen: process = „: nr“ aus dem Empfänger-Tag –

+0

Danke, aber das half mir nicht –

+0

ich die Post mit diesem Code –

Antwort

0

Sie sollten Standardkategorie

<category android:name="android.intent.category.DEFAULT" /> 

Android assign diese Kategorie auf jede Absicht gelten, wenn Kategorie ist nicht angegeben.