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);
versuchen android entfernen: process = „: nr“ aus dem Empfänger-Tag –
Danke, aber das half mir nicht –
ich die Post mit diesem Code –