在我的清单文件中,我已经声明了接收器。(如下所示)
<receiver android:name=".OnAlarmReceive" />
然而,一旦我关闭了我的应用程序,我就无法获得警报和通知。显然,对我的X1 M1 N1 X中的X1 M0 N1 X的调用从未进行过。
public class OnAlarmReceive extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent arg1)
{
//various stuff
}
}
在MainActivity内部,我的报警管理器类如下所示。
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent("MY_ALARM_NOTIFICATION");
intent.setClass(this, OnAlarmReceive.class);
intent.putExtra("message", message);
PendingIntent pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Calendar timeCal = Calendar.getInstance();
timeCal.set(Calendar.HOUR_OF_DAY, hour);
timeCal.set(Calendar.MINUTE, minutes);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeCal.getTimeInMillis(), pendingIntent);
我的清单如下:
<receiver android:name=".OnAlarmReceive">
<intent-filter android:priority="1">
<action android:name="MY_ALARM_NOTIFICATION"/>
</intent-filter>
</receiver>
即使我关闭了应用程序后台服务,我应该怎么做才能收到通知/警报?
6条答案
按热度按时间6mzjoqzu1#
您应该在清单中添加intent-filter,如
kxeu7u2r2#
正如龚聪所说,你需要声明你的接收器应该监听哪些事件。
例如:
然后在设置闹钟时,在操作中使用Intent:
fjaof16o3#
您的代码工作正常!
您所要做的就是更改这一行:
下面这行:
即使应用程序未运行,“onReceive”中的代码也将在5000 ms(5秒)后运行
xa9qqrwz4#
据我所知,在某些情况下,根据实现方式,操作系统有权调整报警设置时间。因此,请尝试相应地使用AlarmManager.set(...)、AlarmManager.setexact(...)等。在某些情况下,根据制造商(自定义Android操作系统),操作系统可能会阻止火灾报警。
p4tfgftt5#
在清单文件中为接收器添加
android:exported="true"
有助于我接收警报(因此,唤醒应用程序),即使应用程序关闭(我故意从任务列表中删除应用程序)。qlfbtfca6#
1.在清单文件中声明接收方:
请始终记住,整个Android系统是区分大小写的。因此,请检查您的拼写是否正确的AndroidMainfest.xml。
2.如果你为你的接收器创建了一个
PendingIntent
,请添加一个requestCode
-即使它是一个随机数!没有你的onReceive
代码永远不会被调用!启动
AlarmManager
的函数应如下所示:广播接收器类别:
原文:Why my BroadcastReceiver does not get called?