我想每天早上 8:00 显示通知

编程入门 行业动态 更新时间:2024-10-18 10:25:35
本文介绍了我想每天早上 8:00 显示通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用警报管理器在特定时间(每天上午 8:00)向用户发送通知.但我的代码不正确,请帮助我获取显示通知

I'm trying to send a notification to a user at a specific time at (8:00 am everyday) using an Alarm Manager. but my code not correct work please help me for show notification

我的主活动

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlarmController al=new AlarmController(this); al.StartAlarm(); }

我的报警控制器

public class AlarmController { private Context m_Context; private AlarmManager mgr; private static final long PERIOD = 1000 * 30; public AlarmController(Context context){ m_Context = context; mgr = (AlarmManager)m_Context.getSystemService(Context.ALARM_SERVICE); } public void StartAlarm(){ Intent i = new Intent(m_Context, OnAlarmReceiver.class); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY,8); PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT); mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); Log.i("AlarmController", "StartAlarm"); } public void StopAlarm(){ Intent i = new Intent(m_Context, OnAlarmReceiver.class); PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT); mgr.cancel(pi); Log.i("AlarmController", "StopAlarm"); } }

和 OnAlarmReceiver

and OnAlarmReceiver

public class OnAlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { context.startService(new Intent(context, AppService.class));

}}

AppService public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "start job"); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("My notification") .setContentText("از اپ سرویس!"); int mNotificationId = 001; NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNotifyMgr.notify(mNotificationId, mBuilder.build()); Log.i(TAG, "stop job"); return START_STICKY; }

推荐答案

alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmIntent = new Intent(context of current file, AlarmReceiver1.class); pendingIntent = PendingIntent.getBroadcast(Menu.this, 0, alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT); alarmIntent.setData((Uri.parse("custom://"+System.currentTimeMillis()))); alarmManager.cancel(pendingIntent); Calendar alarmStartTime = Calendar.getInstance(); Calendar now = Calendar.getInstance(); alarmStartTime.set(Calendar.HOUR_OF_DAY, 8); alarmStartTime.set(Calendar.MINUTE, 00); alarmStartTime.set(Calendar.SECOND, 0); if (now.after(alarmStartTime)) { Log.d("Hey","Added a day"); alarmStartTime.add(Calendar.DATE, 1); } alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); Log.d("Alarm","Alarms set for everyday 8 am.");

来到广播接收器类.您需要在清单中注册您的广播接收器.这将导致您接收时钟事件.覆盖此广播接收器的 onReceive 方法并在那里发出通知,或者创建一个单独的通知构建服务并在那里构建和显示您的通知.

Coming to the broadcast receiver class. You need to register your broadcast receiver in the manifest. This will cause you to receive clock events. Override the onReceive method of this broadcast receiver and make a notification there itself or make a seperate notification building service and build and display your notification there.

清单代码片段:

<receiver android:name="AlarmReceiver1" android:enabled="true">

广播接收器代码片段:

public class AlarmReceiver1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent service1 = new Intent(context, NotificationService1.class); service1.setData((Uri.parse("custom://"+System.currentTimeMillis()))); context.startService(service1); }

通知构建服务代码片段:

Notification building service code snippet:

public class NotificationService1 extends IntentService{ private NotificationManager notificationManager; private PendingIntent pendingIntent; private static int NOTIFICATION_ID = 1; Notification notification; @Override protected void onHandleIntent(Intent intent) { ontext context = this.getApplicationContext(); notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); Intent mIntent = new Intent(this, Activity to be opened after clicking on the notif); Bundle bundle = new Bundle(); bundle.putString("test", "test"); mIntent.putExtras(bundle); pendingIntent = PendingIntent.getActivity(context, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT); Resources res = this.getResources(); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); notification = new NotificationCompat.Builder(this) .setContentIntent(pendingIntent) .setSmallIcon(R.drawable.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.ic_launcher)) .setTicker("ticker value") .setAutoCancel(true) .setPriority(8) .setSound(soundUri) .setContentTitle("Notif title") .setContentText("Text").build(); notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS; notification.defaults |= Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE; notification.ledARGB = 0xFFFFA500; notification.ledOnMS = 800; notification.ledOffMS = 1000; notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, notification); Log.i("notif","Notifications sent."); } }

更多推荐

我想每天早上 8:00 显示通知

本文发布于:2023-11-27 04:08:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636524.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:我想   早上   通知

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!