每五分钟显示一次安卓通知。

7

我想知道如何设置通知的时间。我想每五分钟设置一次通知,请帮忙进行设置。

public class FirstActivity extends Activity
{
    private static final int HELLO_ID = 1;
    //public static final int FLAG_AUTO_CANCEL = 0;`enter code here`
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.firstactivity);

        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

        int icon = R.drawable.icon;
        CharSequence tickerText = "Hello";
        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, tickerText, when);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.statusbarnotification);
        contentView.setImageViewResource(R.id.image, R.drawable.icon);
        contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view");
        notification.contentView = contentView;
        notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;
        Intent notificationIntent = new Intent(getApplicationContext(), SecondActivity.class);
        //PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.contentIntent = contentIntent;
        mNotificationManager.notify(HELLO_ID, notification);
    }

}
1个回答

3

我认为最好的方法是创建一个服务来设置通知,然后使用AlarmManager激活服务。
这是AlarmManager的代码:

private void startAlarm() {
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE);
    long when = System.currentTimeMillis();         // notification time
    Intent intent = new Intent(this, ReminderService.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
    alarmManager.setRepeating(AlarmManager.RTC, when, (AlarmManager.INTERVAL_FIFTEEN_MINUTES / 3), pendingIntent);
}

要控制时间间隔,请使用常量值或插入您自己的值(以毫秒为单位)。

这是服务:

public class ReminderService extends IntentService {
    private static final int NOTIF_ID = 1;

    public ReminderService(){
        super("ReminderService");
    }

    @Override
      protected void onHandleIntent(Intent intent) {
        NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        long when = System.currentTimeMillis();         // notification time
        Notification notification = new Notification(R.drawable.icon, "reminder", when);
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.flags |= notification.FLAG_AUTO_CANCEL;
        Intent notificationIntent = new Intent(this, YourActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent , 0);
        notification.setLatestEventInfo(getApplicationContext(), "It's about time", "You should open the app now", contentIntent);
        nm.notify(NOTIF_ID, notification);
    }

}

1
谢谢是我想要的,但我有一个问题想问你。我如何在Service Class内设置AlarmManager,以便在它检查数据库并有新内容需要显示通知时触发?(如果您可以用代码解释会更好,不需要数据库的代码...只需在Service Class中设置AlarmManager和if语句即可) - baTimá
1
StartAlarm() 函数是什么时候被调用的?我没有收到任何通知..代码好像不起作用:( - Neo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接