繁体   English   中英

在特定时间显示状态栏通知

[英]Show status bar notification in certain time

我想每天同时显示用户通知。 现在,我只有以下代码:

我的TimeAlarm.class显示通知:

public class TimeAlarm extends BroadcastReceiver {

    NotificationManager nm;

    @Override
    public void onReceive(Context context, Intent intent) {
        nm = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = "Nithin";
        CharSequence message = "Crazy About Android...";
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                new Intent(), 0);
        Notification notif = new Notification(R.drawable.ic_launcher,
                "Crazy About Android...", System.currentTimeMillis());
        notif.setLatestEventInfo(context, from, message, contentIntent);
        notif.sound = Uri.parse("android.resource://"
                + context.getPackageName() + "/" + R.raw.test);
//      r.play();
        nm.notify(1, notif);
    }
}

通知的初始化以每5秒显示一次:

public void setRepeatingAlarm() {
        Intent intent = new Intent(this, TimeAlarm.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
                (5 * 1000), pendingIntent);
    }

现在我的问题是我应该如何修改此代码以将通知设置为在特定时间每天重复。 例如每天14:36钟吗?

一种简单但不精确的方法是明天将System.currentTimeMillis()更改为14:36的计算,可能使用Calendar对象:

Calendar cal=Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY, 14);
cal.set(Calendar.MINUTE, 36);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

if (cal.getTimeInMillis() < System.currentTimeMillis()) {
  cal.add(Calendar.DAY_OF_YEAR, 1);
}

我说“ easy-but-inexact”是因为一旦您的android:targetSdkVersion为19或更高版本,Android 4.4就会将setRepeating()的行为更改为不精确。 如果您需要精确的警报,则需要使用setExact()并进行自己的“重复”(通过在警报消失时再次调用setExact() )。 您仍然会在每次setExact()调用上使用相同的Calendar类型的计算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM