在我的代码中,我有一个广播接收器
<receiver
android:name=".alarm.AlarmReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
<intent-filter>
<action android:name="com.BalDroid.YekNegah.alarm.dailyAction"
/>
</intent-filter>
</receiver>
我在onReceive方法中在此接收器中安排闹钟
PendingIntent pi = PendingIntent.getBroadcast(context, AlarmRow.getId(mycursor), i, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= 21) {
AlarmManager.AlarmClockInfo alarmInfo = new AlarmManager.AlarmClockInfo(
mycal.getTimeInMillis(),pi);
mgr.setAlarmClock(alarmInfo,pi);
// Create a Pending intent to show Alarm Details
}
虽然接收器运行但警报不会触发mgr.setAlarmClock
。但是当我使用时
mgr.setExactAndAllowWhileIdle
警报触发器
(由于setAlarmClock
准确度,我必须在我的代码中使用setAlarmClock
当我从MainActivity安排mgr.setAlarmClock
时(手动启动应用程序时),它可以工作
我找不到解决方案!!
(我不知道接收者为什么不工作。)
答案 0 :(得分:0)
我的应用在setAlarmClock
上也调用了AlarmManager
,但是该事件并未触发。对我来说,原因是制造商对后台进程的默认限制(我的手机是小米)。
转到设置->您的应用程序,然后找到背景限制选项。关闭限制,setAlarmClock
必须正常工作。
结论是,结果取决于制造商的默认设置。