api 15上的NotificationCompat.Builder无法通知时间

时间:2014-12-11 15:42:23

标签: android notificationmanager

我尝试在NotificationCompat.Builder上使用API​​ 15上的Notification,但如果我通过10秒(100000毫秒),那么通知会立即启动。 问题出在哪儿? 我想在10秒后开始通知,我该怎么办?

这是我方法的代码

 private void createNotification(long when,String data){
        String notificationContent ="Notification Content Click Here to go more details";
        String notificationTitle ="This is Notification";
        Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        int smalIcon =R.drawable.ic_launcher;
        String notificationData="This is data : "+data;
        Intent intent =new Intent(getApplicationContext(), NotificationDetailsActivity.class);
        intent.putExtra("textkey", notificationData);
        intent.setData(Uri.parse("content://" + when));

        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_NO_CREATE);

        NotificationManager notificationManager =(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                getApplicationContext())
                .setWhen(when)
                .setContentText(notificationContent)
                .setContentTitle(notificationTitle)
                .setSmallIcon(smalIcon)
                .setAutoCancel(true)
                .setTicker(notificationTitle)
                .setLargeIcon(largeIcon)
                .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND)
                .setContentIntent(pendingIntent);

        Notification notification=notificationBuilder.build();
        notificationManager.notify((int) when, notification);
    }

1 个答案:

答案 0 :(得分:1)

这不是setWhen()所做的。根据{{​​3}}:

  

设置事件发生的时间。面板中的通知按此时间排序。

这与Unix时间内触发通知的事件发生的时间(即,您收到消息,社交网络更新等)有关,因此默认值是documentation返回的内容(即,现在)。传递100,000(实际上是100秒)将意味着1970年1月1日,UTC时间12:01:40。

如果您希望安排在将来某个时间显示通知,则应通过System.currentTimeMillis()设置闹钟,以便您在指定时间触发通知代码。