2016-09-15 3 views
-1

특정 시간에 Notification을 보여줄 프로젝트를 만들려고했는데 심지어 앱이 열리지도 않습니다. 그러나 그것은 특정 시간에 그리고 주어진 시간 후에도 메시지를 보여줍니다. 또한 앱을 닫을 때 Notification이 작동하지 않습니다.AlarmManager를 사용하여 미리 알림을 만들려면 어떻게해야합니까?

주어진 시간이 지나면 영구히 멈추게하고 배경에서도 실행할 수 있습니까?

코드는 아래와 같습니다.

private PendingIntent pendingIntent; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Calendar calendar = Calendar.getInstance(); 

    calendar.set(Calendar.MONTH, Calendar.SEPTEMBER); 
    //calendar.set(Calendar.YEAR, 2016); 
    calendar.set(Calendar.DAY_OF_MONTH, 15); 

    calendar.set(Calendar.HOUR_OF_DAY, 14); 
    calendar.set(Calendar.MINUTE, 24); 
    calendar.set(Calendar.SECOND, 05); 
    //calendar.set(Calendar.AM_PM,Calendar.PM); 

    Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0); 

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

    Intent into = new Intent(this, AlarmReceiver.class); 
    PendingIntent ppendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, into, 0); 
    AlarmManager alarmManag = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManag.cancel(ppendingIntent); 
    ppendingIntent.(); 
} 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Intent service1 = new Intent(context, MyAlarmService.class); 
    context.startService(service1); 

} 

수신자가 매니페스트에 추가되었습니다.

답변

0
Calendar calendar = Calendar.getInstance(); 

    calendar.set(Calendar.MONTH, Calendar.SEPTEMBER); 
    calendar.set(Calendar.DAY_OF_MONTH, 15); 
    calendar.set(Calendar.HOUR_OF_DAY, 14); 
    calendar.set(Calendar.MINUTE, 24); 
    calendar.set(Calendar.SECOND, 00); 


AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

final int id = (int) System.currentTimeMillis(); 
Intent intentAlarm = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT); 


alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
관련 문제