Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To give notifications on android on specific time?

I want to give notification to my app on a specific time. Say everyday i have to give notification on 7 AM even if the app is closed.

How can i do this? Any tutorial? Please mention the link.

like image 519
admin 7798 Avatar asked Dec 29 '15 19:12

admin 7798


People also ask

Can you set notifications for certain times Android?

On Android, you will need to open Settings. Then choose Sound>Do Not Disturb>Schedules. On this screen, you have several options to set the days and times for Do Not Disturb, choose which apps to apply it to, and set exceptions.

How do you send a notification to a specific date on Android?

This example demonstrate about How to set an Android notification to a specific date in the future. Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.

How do I set notification Time?

On your Android device, open the Settings app. Go to Sound & vibration > Do Not Disturb > Turn on automatically. Tap Add rule > Time. Enter your preferences, double-check that your rule is on, then you're all set!


1 Answers

first you need to use a broadcastreceiver. and because a broadcast receiver up only for a short time

from the android developer blog.When handling a broadcast, the application is given a fixed set of time (currently 10 seconds) in which to do its work. If it doesn't complete in that time, the application is considered to be misbehaving, and its process immediately tossed into the background state to be killed for memory if needed.

its a better practice to use also intent service here you have a example how to do it.

this is the broadcast receiver class.

public class MyReceiver extends BroadcastReceiver {     public MyReceiver() {     }      @Override     public void onReceive(Context context, Intent intent) {          Intent intent1 = new Intent(context, MyNewIntentService.class);         context.startService(intent1);     } } 

and register it in the manifest.

<receiver     android:name=".MyReceiver"     android:enabled="true"     android:exported="false" > </receiver> 

this is the intent service class.

public class MyNewIntentService extends IntentService {     private static final int NOTIFICATION_ID = 3;      public MyNewIntentService() {         super("MyNewIntentService");     }      @Override     protected void onHandleIntent(Intent intent) {         Notification.Builder builder = new Notification.Builder(this);             builder.setContentTitle("My Title");             builder.setContentText("This is the Body");             builder.setSmallIcon(R.drawable.whatever);         Intent notifyIntent = new Intent(this, MainActivity.class);         PendingIntent pendingIntent = PendingIntent.getActivity(this, 2, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);         //to be able to launch your activity from the notification          builder.setContentIntent(pendingIntent);         Notification notificationCompat = builder.build();         NotificationManagerCompat managerCompat = NotificationManagerCompat.from(this);         managerCompat.notify(NOTIFICATION_ID, notificationCompat);     } } 

and register it in the manifest.

<service     android:name=".MyNewIntentService"     android:exported="false" > </service> 

and then in your activity set the alarm manger to start the broadcast receiver at a specific time and use AlarmManager setRepeating method to repeat it this example bellow will repeat it every day.

 Intent notifyIntent = new Intent(this,MyReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast             (context, NOTIFICATION_REMINDER_NIGHT, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  System.currentTimeMillis(),             1000 * 60 * 60 * 24, pendingIntent); 

i hope this will help you.

like image 121
Shia G Avatar answered Sep 19 '22 08:09

Shia G