2017-01-09 2 views
-4

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

private void setAlarmToCallNotificationService(Context context, int request_code, String notificationText, String notificationTitle) { 

     Log.i("Inside notification,","Yes"); 

     Intent intent = new Intent(context, notificationService.class); 
     intent.putExtra("Notification_title",notificationTitle); 
     intent.putExtra("Notification_text",notificationText); 


     //hit the notification At the 8.00 in the morning 
     Calendar notificationCalendar=Calendar.getInstance(); 
     notificationCalendar.set(Calendar.HOUR_OF_DAY,16); 
     notificationCalendar.set(Calendar.MINUTE,29); 
     notificationCalendar.set(Calendar.SECOND,0); 

     Long time=notificationCalendar.getTimeInMillis(); 

     System.out.println("NOTIFICATION Time is "+notificationCalendar.get(Calendar.HOUR_OF_DAY)+" "+notificationCalendar.get(Calendar.MINUTE)); 
     Log.i("Target",time.toString()); 

     //final int _id = (int) System.currentTimeMillis(); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, request_code, intent, PendingIntent.FLAG_ONE_SHOT); 

     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent); 

    } 

Я проверил, что срабатывает сигнализация.

public class notificationService extends BroadcastReceiver { 

    public static String TAG="notificationService"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     String notificatioTitle=intent.getExtras().getString("Notification_title"); 
     String notificationMsg=intent.getExtras().getString("Notification_text"); 

     Log.i(TAG,"Notification title "+notificatioTitle); 
     Log.i(TAG,"Notification msg "+notificationMsg); 

     NotificationCompat.Builder notification=new NotificationCompat.Builder(context) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(notificatioTitle) 
       .setContentText(notificationMsg); 

     NotificationManager mNotificationManager =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(0,notification.build()); 
    } 


} 

файл манифеста:

<receiver android:name=".notificationService" /> 
+0

Почему так много downvotes? может кто-нибудь объяснить. –

ответ

0

ли приемник получить намерение в ожидаемое время?

Я имею в виду ... код, указанный ниже, ничего не печатает?

Log.i(TAG,"Notification title "+notificatioTitle); 
Log.i(TAG,"Notification msg "+notificationMsg); 

Если нет, проверьте, если вы используете Settings.System.AUTO_TIME в вас устройство DateTimeSettings, Вы, возможно, потребуется использовать NTP время, чтобы установить сигнал тревоги.

long currentTime = System.currentTimeMillis() - ntpTimeOffset; 
long timeToWaitForTrigger = calendar.getTimeInMillis() - currentTime; 
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeToWaitForTrigger, pendingIntent); 
+0

Я использую почти ту же функцию для запуска диалога, но это работает, но почему бы не работать. @ Skeeter –

+0

yup Мой получатель уведомлений не получает намерения в ожидаемое время. Но я запускаю сигнал тревоги с помощью того же кода, но с другим временем, которое вызывает другой широковещательный приемник (этот широковещательный приемник работает), чтобы выполнить некоторые вычисления, которые затем вызывают это уведомление (этот широковещательный приемник не принимает намерение) уведомление. –