我要发出的通知是要在每天的确切同一时间发出通知。我想保持简单,因为我还是个初学者。
这是我的MainActivity:
private static final int notificationId = 4242;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initChannels(this);
// Create an explicit intent for an Activity in your app
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, "default")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle("This is the title")
.setContentText("This is the body of the notification.")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
// Set the intent that will fire when the user taps the notification
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
// notificationId is a unique int for each notification that you must define
notificationManager.notify(notificationId, mBuilder.build());
}
public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
return;
}
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
"Channel name",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);
}
我的代码当前执行的操作完全没有。我相信代码在我启动应用程序时应该发送通知,但这也没有发生。我认为第一步至少是使通知生效。然后将其设置为在特定时间(例如上午9点)工作。
编辑:该代码已修复,至少可以正常工作。现在,当我进入应用程序时,我将收到通知,如原计划那样。我的问题的第二部分是如何使其每天在同一时间关闭?
答案 0 :(得分:0)
您可以使用Alarm Manager
但是,为了减少电池消耗,Alarm Manager不会在准确的时间发出警报,并且此策略在Android平台上有所不同。
您可以找到有关警报管理器Here
的更多信息从API 19(Build.VERSION_CODES.KITKAT)开始,警报传递是不准确的:操作系统将转移警报,以最大程度地减少唤醒和电池消耗。