我有通知运行。我只需要让它在特定时间出现

时间:2014-05-22 16:43:54

标签: android

我搜索了所有类似的问题/答案,但我无法使用我的代码!我可以立即显示通知。但是,我需要它在用户运行应用程序后24小时出现。我被卡住了。我尝试使用Alarm Manager但没有成功。这是我的工作代码。请指导我。感谢。

public class NotifyNow { 


static void noty(Context context, String message) {

      int icon = R.drawable.ic_launcher;
      long when = System.currentTimeMillis();
      String appname = context.getResources().getString(R.string.app_name);
      NotificationManager notificationManager = (NotificationManager) context
       .getSystemService(Context.NOTIFICATION_SERVICE);

      Notification notification;
      PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
      new Intent(context, MainActivity.class), 0);


      NotificationCompat.Builder builder = new NotificationCompat.Builder(
      context);
      notification = builder.setContentIntent(contentIntent)
     .setSmallIcon(icon).setTicker(appname).setWhen(0)
     .setAutoCancel(true).setContentTitle(appname)
     .setContentText(message).build();

      //notification.defaults |= Notification.DEFAULT_SOUND;


      notification.sound = 
                RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);


        notificationManager.notify(0 , notification);






      }

我从我的MainActivity类中调用它,如下所示:

NotifyNow.noty(this,"Notification worked");

如何实施警报。我很欣赏详细的答案,因为我对java很新。

2 个答案:

答案 0 :(得分:1)

我试过这个......

放大写通知服务

notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notifyDetails=new Notification(
                                            R.drawable.icon,contentTitle,System.currentTimeMillis());

    notificationManager .notify(MY_SIMPLE_NOTFICATION_ID, notifyDetails);

您也可以使用this库来实现这一目标......

答案 1 :(得分:1)

当您的应用程序通过在Activity的onStart()上运行时,您可以使用日期API找到当前日期时间。 例如

currentTime = SystemClock.currentThreadTimeMillis();
  

现在,您可以使用AlarmManager API添加警报。   AlarmManager Refernce

     

注意:Alarm Manager适用于您希望在特定时间运行应用程序代码的情况,   即使您的应用程序当前没有运行。对于正常的定时操作(刻度,超时等),它更容易   并且使用Handler效率更高。

创建警报的示例代码是:

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;

alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
    currentTime  +
    24 * 60 * 60 * 1000, alarmIntent);

请注意:此代码未经过测试,只是一个必要的概念。如果您遇到任何问题,请告诉我。