我创建了一个简单的警报应用程序,我在broadcast receivers
中注册了两个AndroidManifest.xml
(一个用于接收警报,另一个用于在设备启动时重新安排它们)。在安排了一些警报后,我重启了我的设备并且我的"OnBoot" receiver
重新安排了警报,但是第一个接收器没有重新启动它们。如果我启动我的应用程序,安排一些警报并且不会关闭它,接收器将正常工作,但如果我关闭(不强制停止)应用程序或通过按下主页button
将其发送到后台永远不会收到警报!我在几个设备(HTC,魅族,三星)上测试了它并遇到了同样的问题。我发现只有一种方法可以使接收器正常工作是杀死app,因为在我再次启动后,接收器工作正常甚至应用程序关闭,但在我重新启动设备后我会遇到同样的问题。拜托,任何人都可以帮助我吗?我需要做些什么来摆脱这个问题?
我尝试了几乎所有内容(更改了pendingintent flags
和request
代码,running receivers
代码位于远程processes
,设置intent-filters
,extend
来自{ {1}}和许多其他人)但没有任何帮助我。
AndroidManifest.xml中的接收器
WakefulBroadcastReceiver
广播接收器
<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>
我使用CreateNotification()方法发送通知和数据库来更新警报的时间和日期。
制作闹钟
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);
}
之后我加了一些,
Intent intent = new Intent("com.gd.action.intent.bri");
答案 0 :(得分:0)
您应该应用默认类别
<category android:name="android.intent.category.DEFAULT" />
如果未指定类别,则Android会将此类别分配给每个意图。