Skip to content

Instantly share code, notes, and snippets.

@ELTEGANI
Last active April 2, 2025 11:28
Show Gist options
  • Select an option

  • Save ELTEGANI/3fe77c52449a3caf9b89651fcc0ce10c to your computer and use it in GitHub Desktop.

Select an option

Save ELTEGANI/3fe77c52449a3caf9b89651fcc0ce10c to your computer and use it in GitHub Desktop.

Revisions

  1. ELTEGANI revised this gist May 14, 2020. 2 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
  2. ELTEGANI renamed this gist May 14, 2020. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. ELTEGANI revised this gist May 14, 2020. 3 changed files with 116 additions and 0 deletions.
    20 changes: 20 additions & 0 deletions AndroidManifest
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    <? xml version = "1.0" encoding = "utf-8" ?>
    <manifest xmlns: android = "http://schemas.android.com/apk/res/android"
    package = "app.tutorialspoint.com.notifyme" >
    <uses-permission android :name = "android.permission.VIBRATE" />
    <application
    android :allowBackup = "true"
    android :icon = "@mipmap/ic_launcher"
    android :label = "@string/app_name"
    android :roundIcon = "@mipmap/ic_launcher_round"
    android :supportsRtl = "true"
    android :theme = "@style/AppTheme" >
    <activity android :name = ".MainActivity" >
    <intent-filter>
    <action android :name = "android.intent.action.MAIN" />
    <category android :name = "android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <receiver android :name= ".MyNotificationPublisher" />
    </application>
    </manifest>
    71 changes: 71 additions & 0 deletions MainActivity
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    package app.tutorialspoint.com.notifyme ;
    import android.app.AlarmManager ;
    import android.app.DatePickerDialog ;
    import android.app.Notification ;
    import android.app.PendingIntent ;
    import android.content.Context ;
    import android.content.Intent ;
    import android.os.Bundle ;
    import android.support.v4.app.NotificationCompat ;
    import android.support.v7.app.AppCompatActivity ;
    import android.view.View ;
    import android.widget.Button ;
    import android.widget.DatePicker ;
    import java.text.SimpleDateFormat ;
    import java.util.Calendar ;
    import java.util.Date ;
    import java.util.Locale ;
    public class MainActivity extends AppCompatActivity {
    public static final String NOTIFICATION_CHANNEL_ID = "10001" ;
    private final static String default_notification_channel_id = "default" ;
    Button btnDate ;
    final Calendar myCalendar = Calendar. getInstance () ;
    @Override
    protected void onCreate (Bundle savedInstanceState) {
    super .onCreate(savedInstanceState) ;
    setContentView(R.layout. activity_main ) ;
    btnDate = findViewById(R.id. btnDate ) ;
    }
    private void scheduleNotification (Notification notification , long delay) {
    Intent notificationIntent = new Intent( this, MyNotificationPublisher. class ) ;
    notificationIntent.putExtra(MyNotificationPublisher. NOTIFICATION_ID , 1 ) ;
    notificationIntent.putExtra(MyNotificationPublisher. NOTIFICATION , notification) ;
    PendingIntent pendingIntent = PendingIntent. getBroadcast ( this, 0 , notificationIntent , PendingIntent. FLAG_UPDATE_CURRENT ) ;
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context. ALARM_SERVICE ) ;
    assert alarmManager != null;
    alarmManager.set(AlarmManager. ELAPSED_REALTIME_WAKEUP , delay , pendingIntent) ;
    }
    private Notification getNotification (String content) {
    NotificationCompat.Builder builder = new NotificationCompat.Builder( this, default_notification_channel_id ) ;
    builder.setContentTitle( "Scheduled Notification" ) ;
    builder.setContentText(content) ;
    builder.setSmallIcon(R.drawable. ic_launcher_foreground ) ;
    builder.setAutoCancel( true ) ;
    builder.setChannelId( NOTIFICATION_CHANNEL_ID ) ;
    return builder.build() ;
    }
    DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet (DatePicker view , int year , int monthOfYear , int dayOfMonth) {
    myCalendar .set(Calendar. YEAR , year) ;
    myCalendar .set(Calendar. MONTH , monthOfYear) ;
    myCalendar .set(Calendar. DAY_OF_MONTH , dayOfMonth) ;
    updateLabel() ;
    }
    } ;
    public void setDate (View view) {
    new DatePickerDialog(
    MainActivity. this, date ,
    myCalendar .get(Calendar. YEAR ) ,
    myCalendar .get(Calendar. MONTH ) ,
    myCalendar .get(Calendar. DAY_OF_MONTH )
    ).show() ;
    }
    private void updateLabel () {
    String myFormat = "dd/MM/yy" ; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat , Locale. getDefault ()) ;
    Date date = myCalendar .getTime() ;
    btnDate .setText(sdf.format(date)) ;
    scheduleNotification(getNotification( btnDate .getText().toString()) , date.getTime()) ;
    }
    }
    25 changes: 25 additions & 0 deletions MyNotificationPublisher
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    package app.tutorialspoint.com.notifyme ;
    import android.app.Notification ;
    import android.app.NotificationChannel ;
    import android.app.NotificationManager ;
    import android.content.BroadcastReceiver ;
    import android.content.Context ;
    import android.content.Intent ;
    import static app.tutorialspoint.com.notifyme.MainActivity. NOTIFICATION_CHANNEL_ID ;
    public class MyNotificationPublisher extends BroadcastReceiver {
    public static String NOTIFICATION_ID = "notification-id" ;
    public static String NOTIFICATION = "notification" ;
    public void onReceive (Context context , Intent intent) {
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context. NOTIFICATION_SERVICE ) ;
    Notification notification = intent.getParcelableExtra( NOTIFICATION ) ;
    if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) {
    int importance = NotificationManager. IMPORTANCE_HIGH ;
    NotificationChannel notificationChannel = new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICATION_CHANNEL_NAME" , importance) ;
    assert notificationManager != null;
    notificationManager.createNotificationChannel(notificationChannel) ;
    }
    int id = intent.getIntExtra( NOTIFICATION_ID , 0 ) ;
    assert notificationManager != null;
    notificationManager.notify(id , notification) ;
    }
    }
  4. ELTEGANI revised this gist May 14, 2020. No changes.
  5. ELTEGANI created this gist May 14, 2020.
    15 changes: 15 additions & 0 deletions activity_main.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    <? xml version = "1.0" encoding = "utf-8" ?>
    <RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"
    xmlns: tools = "http://schemas.android.com/tools"
    android :layout_width = "match_parent"
    android :layout_height = "match_parent"
    android :padding = "16dp"
    tools :context = ".MainActivity" >
    <TextView
    android :id = "@+id/tvDate"
    android :layout_width = "match_parent"
    android :layout_height = "wrap_content"
    android :hint = "Select Date"
    android :onClick = "setDate"
    android :padding = "16dp" />
    </RelativeLayout>