2016-02-06 4 views
0

Я хочу установить уведомление в будние дни. Я добавил несколько дней в диалоговом окне предупреждения, чтобы показать дни.Как установить повторное уведомление для определенного дня недели?

Я хочу установить день в календаре, который пользователь выбрал в диалоговом окне оповещения. Кроме того, это должно повториться на следующей неделе в тот же день.

Я установил диалог выбора времени, чтобы выбрать время уведомления. Но если я делаю c.getTime(), я получаю текущую дату и время.

Как установить уведомление за другие дни? Например, если сегодня понедельник, и я хочу создать уведомление на свадьбе? Как я могу назначить встречу в календаре?

c.set(Calendar.HOUR_OF_DAY, hour); 
     c.set(Calendar.MINUTE, minute); 
     c.set(Calendar.SECOND,0); 
     c.set(Calendar.MILLISECOND,0); 

     notification = c.getTime(); 
     notificationTime = df.format(notification); 
     notifyTime.setText(notificationTime); 
     Toast.makeText(getApplicationContext(),String.valueOf(notification),Toast.LENGTH_SHORT).show(); 

Для получения уведомления я использую диспетчер аварийных сигналов. Диалог оповещения

private void setAlarm(Calendar targetmCalen) { 

    Intent intent = new Intent(getBaseContext(),NotificationReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,targetmCalen.getTimeInMillis(), 
      AlarmManager.INTERVAL_DAY *7, pendingIntent); 

    ComponentName receiver = new ComponentName(getApplicationContext(),NotificationReceiver.class); 
    PackageManager pm = getApplicationContext().getPackageManager(); 

    pm.setComponentEnabledSetting(receiver, 
      PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
      PackageManager.DONT_KILL_APP); 

    Toast.makeText(getApplicationContext(),"Notification Set",Toast.LENGTH_SHORT).show(); 
} 

для выбора дня:

selectDay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final AlertDialog.Builder builder = new AlertDialog.Builder(AddEventActivity.this); 

      builder.setSingleChoiceItems(R.array.day_array, -1, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 

          String[] day = getBaseContext().getResources().getStringArray(R.array.day_array); 

          selectDay.setText(day[item]); 

          dialog.dismiss(); 
         } 
        }); 
      builder.show(); 
     } 
    }); 

Должен ли я установить DayOfWeek в календаре, например в диалоговом окне предупреждения? Как

c.set (Calendar.DAY_OF_WEEK)?

EDIT:

Я пытался сделать этот путь. Но доза это может идти на один день вперед каждый раз, если я выбираю день несколько раз.

selectDay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final AlertDialog.Builder builder = new AlertDialog.Builder(AddEventActivity.this); 

      builder.setSingleChoiceItems(R.array.day_array, -1, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 

          String[] day = getBaseContext().getResources().getStringArray(R.array.day_array); 

          selectDay.setText(day[item]); 

          dayOfWeek = day[item]; 

          switch (dayOfWeek) 
          { 
           case "Mon": 
            c.set(Calendar.DAY_OF_WEEK,2); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 
           case "Tue": 

            c.set(Calendar.DAY_OF_WEEK, 3); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 
           case "Wed": 
            c.set(Calendar.DAY_OF_WEEK, 4); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 

           case "Thu": 
            c.set(Calendar.DAY_OF_WEEK, 5); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 

           case "Fri": 
            c.set(Calendar.DAY_OF_WEEK, 6); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 

           case "Sat": 
            c.set(Calendar.DAY_OF_WEEK, 7); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
            break; 

           case "Sun": 

            c.set(Calendar.DAY_OF_WEEK,1); 
            c.getTime(); 
            Toast.makeText(getApplicationContext(),String.valueOf(c.getTime()),Toast.LENGTH_SHORT).show(); 
          } 

          dialog.dismiss(); 
         } 
        }); 
      builder.show(); 
     } 
    }); 

Пожалуйста, помогите ..

+0

поставил вам уведомление внутри '' обслуживания – Mohit

+0

, что я сделал. Я получаю уведомление, но не в нужный день. как я могу установить день? – Sid

+0

вы всегда можете создать объект Date d, а затем c.setTime (d) – Infested

ответ

0
public class TimerReceiver extends BroadcastReceiver { 

public void scheduleAlarms(Context paramContext) { 

    Calendar calendar = Calendar.getInstance(); 

    if (strmyTime.contains("One Week")) { 
     calendar.set(Calendar.DATE, 7); 

     registerReceiver(paramContext, calendar, AlarmManager.INTERVAL_DAY * 7); 
    } 

} 

public void registerReceiver(Context paramContext, Calendar calender, long interval) { 

    AlarmManager localAlarmManager = (AlarmManager) paramContext.getSystemService(Context.ALARM_SERVICE); 
    PendingIntent localPendingIntent = PendingIntent.getService(paramContext, 0, 
      new Intent(paramContext, NotificationService.class), PendingIntent.FLAG_UPDATE_CURRENT); 

    localAlarmManager.setRepeating(AlarmManager.RTC, calender.getTimeInMillis(), interval, localPendingIntent); 

} 

@Override 
public void onReceive(Context context, Intent intent) { 


    scheduleAlarms(context); 
    context.startService(new Intent(context, Notification.class)); 
     } 

}

+0

Для повторения тревоги я могу сделать Interval_Day * 7. Но как я могу назначить день? – Sid

 Смежные вопросы

  • Нет связанных вопросов^_^