没有得到未来时间的通知

时间:2015-02-03 12:53:54

标签: android service broadcastreceiver alarmmanager

即使用户关闭了应用程序,我也希望向用户显示通知。但我没有得到未来时间的通知,就像我想在特定时间每天通知用户一样。

    **Here what i have tried**

    >  Calendar c = Calendar.getInstance(); 
       int hour = c.get(Calendar.HOUR_OF_DAY);

       Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
if(hour == 18) {
       pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);

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

** Here is my service class**

public class MyAlarmService extends Service 
{

   private NotificationManager mManager;

    @Override
    public IBinder onBind(Intent arg0)
    {
       // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() 
    {
       // TODO Auto-generated method stub  
       super.onCreate();
    }

   @SuppressWarnings("static-access")
   @Override
   public void onStart(Intent intent, int startId)
   {
       super.onStart(intent, startId);

       mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
       Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);

       Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", System.currentTimeMillis());
       intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP);

       PendingIntent pendingNotificationIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT);
       notification.flags |= Notification.FLAG_AUTO_CANCEL;
       notification.setLatestEventInfo(this.getApplicationContext(), "AlarmManagerDemo", "This is a test message!", pendingNotificationIntent);

       mManager.notify(0, notification);
    }

    @Override
    public void onDestroy() 
    {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

1 个答案:

答案 0 :(得分:2)

您可以使用AlarmManager设置重复。



AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
        
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*10, pendingIntent);




你要停止闹钟



public void stopAlarmManager()
{          
    if(alarmManager != null)
       alarmManager.cancel(pendingIntent);
}




记住不要忘记在清单文件中注册Receiver



<receiver android:name=".AlarmBroadcastReceiver" >
        </receiver>
&#13;
&#13;
&#13;

这会对你有帮助。