应用程序关闭时警报管理器不起作用。我正在使用安卓 10


Intent i = new Intent(getBaseContext(), MyReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 100,i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 5000, pi);
}
});
}
private void  create()
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
String tag="mm";
Log.d(tag,"xyz");
NotificationChannel notificationChannel = new NotificationChannel("abc","abc",NotificationManager.IMPORTANCE_HIGH);
NotificationManager notificationManager =  getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(notificationChannel);
}

//接收器类

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationCompat.Builder notification  = new NotificationCompat.Builder(context,"abc")
.setContentTitle("Title")
.setContentText("text")
.setPriority(NotificationManager.IMPORTANCE_HIGH)
.setSmallIcon(R.drawable.ic_launcher_background);
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
notificationManagerCompat.notify(1,notification.build());
}
}

清单文件也会更新。我在onCreate中调用了create函数。如果有人能帮我的话。我已经被困了一个星期了

使用警报的首要考虑之一是其类型应为

报警有两种通用时钟类型:"经过的实时"one_answers"实时时钟"(RTC(。实际运行时间使用"自系统以来的时间"boot"作为参考,实时时钟使用UTC(挂钟(时间。这意味着经过的实时时间适合设置基于随着时间的推移(例如,每30次发出一次警报秒(,因为它不受时区/区域设置的影响。实时时钟类型更适合依赖于电流的报警场所

ELAPSED_REALTIME--根据设备启动后的时间量激发挂起的意图,但不会唤醒设备。经过的时间包括设备处于睡眠状态的任何时间。

ELAPSED_REALTIME_WAKEUP—在设备启动后经过指定的时间长度后,唤醒设备并激发挂起的意图。

此外,SystemClock#elapsedRealtime()返回自启动以来的毫秒数,包括睡眠时间。尝试将其替换为System#currentTimeMillis(),后者以毫秒为单位返回当前时间。

用于唤醒设备以在指定时间激发未决意图。您可以使用RTC_WAKEUP报警类型。

AFAIK,AndroidQ中没有对您的上下文产生影响的行为变化

您还可以看看这个S/O线程

最新更新