虽然这个问题以前可能在堆栈溢出中被问过,但我仍然没有找到一个明确的答案。
我想每天中午12点显示通知,例如,即使应用程序关闭。我参考了这些链接:Notifications in specific time every day android,Android daily repeating notification at specific time of a day using AlarmManager,Android BroadcastReceiver on startup - keep running when Activity is in Background等等......我搞不清Service和BroadcastReceiver之间的区别。我应该使用哪一个?还是两个都使用?
到目前为止,我知道如何显示通知,但我不知道如何每天自动显示一次,即使应用程序关闭。
- 我的密码:**
public class NotifyService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this, "Service created", Toast.LENGTH_LONG).show();
Intent resultIntent = new Intent(this, HomeScreen.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, 0);
Notification.Builder notification = new Notification.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("App Title")
.setContentText("Some Text...")
.setContentIntent(resultPendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT < 16) {
notificationManager.notify(1, notification.getNotification());
} else {
notificationManager.notify(1, notification.build());
}
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed", Toast.LENGTH_LONG).show();
}
}
- 应用程序清单. xml:**
<service android:name=".NotifyService" />
我应该怎样写我的代码来完成我想要的?有什么建议或任何好的链接,我可以理解?
3条答案
按热度按时间rlcwz9us1#
这是更新的解决方案,它的工作Android奥利奥
**第1步:**在
MainActivity
中创建一个方法,并使用AlarmManager
在指定时间设置警报。我把闹钟设为
09:47 PM
**第2步:**创建
BroadcastReceiver
以在警报发生时进行监听我正在创建名为
NotificationReceiver
的类并扩展BroadcastReceiver
,在onReceive
中有一个名为NotificationHelper
的类,不要混淆,我将在后续步骤中解释该类。**步骤3:**创建Notification类
此类处理通知
**步骤4:返回到步骤2:**并调用通知类
注册广播接收器转到您的
Androidmanifest
文件并注册广播接收器有关更多信息,请参阅谷歌的this指南
希望对你有帮助。
nfeuvbwi2#
如果我没理解错的话,我认为你需要使用
AlarmManager
设置一个循环报警。你还需要设置在设备重启时启动报警服务。你可以写一个方法,这样它就可以在报警运行时执行,例如shownotification
。下面的链接应该会对你有所帮助:hgc7kmma3#
1.创建一个包含您的代码的方法,您将在其中定义时间或您希望显示通知的时间。需要从您希望用户请求通知的位置调用此方法。
1.创建一个
Notification_receiver
类,它将扩展Broadcast Receiver,您将在此处定义您的Channel Id。这适用于API 25及更高版本: