2017-07-01 42 views
0

我想使用服务每小时或特定秒显示本地通知,我试图实现此功能,但是我没有取得成功。如何使用服务每小时显示本地通知

我的代码看起来像下面

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

     Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION"); 
     notificationIntent.addCategory("android.intent.category.DEFAULT"); 

     PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     Calendar cal = Calendar.getInstance(); 
     Log.d("day for notification:::", String.valueOf(notification_day)); 

      cal.add(Calendar.MINUTE, notification_day); 
alarmManager.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(), 4 * 60 * 60, broadcast); 
+0

您使用的报警管理和工作Scheduler.Post你的代码你试过了。 –

+0

是的!我用过。 – Komal

+0

已更新代码! – Komal

回答

1

您的代码似乎是确定。 可能有问题的唯一情况是间隔4 * 60 * 60太短,即14.4秒。

此外,你似乎并没有将意图指向特定的接收器。你应该这样做:

Calendar calendar = Calendar.getInstance(); 
Intent intent1 = new Intent(MainActivity.this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager am = (AlarmManager)this.getSystemService(this.ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60, pendingIntent); 

你应该抓住它在:

public class AlarmReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    Intent notificationIntent = new Intent(context, EVentsPerform.class); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
      notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 


    NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
      context).setSmallIcon(R.drawable.applogo) 
      .setContentTitle("text") 
      .setContentText("text") 
      .setWhen(when) 
      .setContentIntent(pendingIntent) 
    notificationManager.notify(yourId, mNotifyBuilder.build()); 

} 

} 

添加到您的清单文件:

<!-- permission required to use Alarm Manager --> 
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 

<!-- Register the Alarm Receiver --> 
<receiver android:name="com.example.alarmmanagernotifcation.AlarmReceiver"/> 
+0

但是我想在应用程序关闭时显示通知,所以必须在* Service *中实现,您有关于它的想法吗? – Komal

+0

接收器会为你做。如果服务目的只是显示通知,你不需要它。 接收器可以代替它。 –

+0

确定但当应用程序关闭时,通知不显示! – Komal