2013-04-20 5 views
1

사용자 정의 값을 기반으로 알림을 만들려고하지만 알람이 작동하지 않습니다. 그것의 결코 방아쇠를 당긴.Android 알람 수신기가 트리거되지 않았습니다.

조각 코드 :

// Set reminder 
      // From java.util.Calendar; 
      Calendar timeNow = Calendar.getInstance(); 
      timeNow.setTimeInMillis(System.currentTimeMillis()); 

      Calendar thatDate = Calendar.getInstance(); 
      thatDate.setTimeInMillis(System.currentTimeMillis()); 



      // add date and time to calender object 

      //** Im trying to set the alarm for the 20th of April, 2013 at 14:03** 
      thatDate.add(Calendar.MINUTE, 3 - timeNow.get(Calendar.MINUTE)); 
      thatDate.add(Calendar.MONTH, 3 - timeNow.get(Calendar.MONTH)); //Its April, so I did 3 not 4 

      thatDate.add(Calendar.DAY_OF_MONTH, 
        20 - timeNow.get(Calendar.DAY_OF_MONTH)); 

      thatDate.add(Calendar.HOUR, 14 - timeNow.get(Calendar.HOUR)); 
      thatDate.add(Calendar.YEAR, 2013 - timeNow.get(Calendar.HOUR)); 


      Intent alarmintent = new Intent(getActivity(), 
        AlarmReceiver.class); 
      alarmintent.putExtra("title", titleEt.getText().toString()); 
      alarmintent.putExtra("note", desc.getText().toString()); 

      PendingIntent sender = PendingIntent 
        .getBroadcast(getActivity(), ALARM_ID, alarmintent, 
          PendingIntent.FLAG_UPDATE_CURRENT 
            | Intent.FILL_IN_DATA); 

      /* 
      * VERY IMPORTANT TO SET FLAG_UPDATE_CURRENT... This will send 
      * the correct extra's informations to the AlarmReceiver class 
      */ 

      // Get the AlarmManager service 

      AlarmManager am = (AlarmManager) getActivity() 
        .getSystemService(Context.ALARM_SERVICE); 
      am.set(AlarmManager.RTC_WAKEUP, thatDate.getTimeInMillis() - timeNow.getTimeInMillis(), sender); 

그리고 내 알람 reciver입니다 코드 : 만 thatDate

public class AlarmReceiver extends BroadcastReceiver { 

private static int NOTIFICATION_ID = 1; 

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

    NotificationManager mNotificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 
    NotificationManager manger = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(
      R.drawable.ic_stat_reminder, "Todo Reminder", 
      System.currentTimeMillis()); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 
      NOTIFICATION_ID, new Intent(context, AlarmReceiver.class), 0); 
    Bundle extras = intent.getExtras(); 
    String title = extras.getString("title"); 

    // Get the title and description of our Notification 

    /* 
    * Notification noti = new Notification.InboxStyle(new 
    * Notification.Builder() .setContentTitle("5 New mails from " + 
    * sender.toString()) .setContentText(subject) 
    * .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap)) 
    * .addLine(str1) .addLine(str2) .setContentTitle("") 
    * .setSummaryText("+3 more") .build(); 
    */ 

    String note = extras.getString("note"); 
    notification.setLatestEventInfo(context, note, title, contentIntent); 
    notification.flags = Notification.FLAG_INSISTENT; 
    notification.defaults |= Notification.PRIORITY_MAX; 
    // Set the default sound for our notification 

    // notification 
    manger.notify(NOTIFICATION_ID++, notification); 

} 
}; 

답변

0

사용. set의 시간은 실시간이며 지연이 아닙니다.

AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); 
am.set(AlarmManager.RTC_WAKEUP, thatDate.getTimeInMillis(), sender); 
+1

여전히 작동하지 않습니다. – AndroidDev

관련 문제