android notification 定时显示,用AlarmManager来让Notification定时通知,但是自己设定的时间并不能弹出通知,该如何解决?...

初学安卓,完成作业时发现自己写的通知如果自定义一个instance则不能按时在虚拟机上出现,但是如果把时间改成System.currentTimeMillis(),就会在点击add按钮的一瞬间有通知。想要的效果是点击set alarm的按钮后能弹出选择对话框,选择时间后add之后就会后台开始计时,到点有通知产生。希望能有大佬帮忙看一下问题出在哪里。谢谢!

这是在activity里面写的:

public void onClickSetAlarm(View arg0){

final String items[] = {"0 min", "5 min", "10 min", "15 min"};

AlertDialog dialog = new AlertDialog.Builder(this)

.setIcon(R.drawable.ic_launcher)

.setTitle("Choose time")

.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

if(which == 0){

beforeTime = 0;

}

if(which == 1){

beforeTime = 2;

}

if(which == 2){

beforeTime = 10;

}

if(which == 3){

beforeTime = 15;

}

}

})

.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

})

.setPositiveButton("Add", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);

Calendar instance = Calendar.getInstance();

instance.set(Calendar.HOUR_OF_DAY, 21);//小时

instance.set(Calendar.MINUTE, 25);//分钟

instance.set(Calendar.SECOND, 0);//秒

Intent intent = new Intent(DetailActivity.this,AutoReceiver.class);

intent.setAction("VIDEO_TIMER");

PendingIntent pi = PendingIntent.getBroadcast(DetailActivity.this,0, intent, 0);

alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5*1000, pi);

}

})

.create();

dialog.show();

}

这是receiver:

package com.example.myschedule;

import android.app.Notification;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

public class AutoReceiver extends BroadcastReceiver {

private static final int NOTIFICATION_FLAG = 0;

@Override

public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals("VIDEO_TIMER")){

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context,DetailActivity.class), 0);

Notification notify = new Notification.Builder(context)

.setSmallIcon(R.drawable.ic_launcher)

.setTicker("You have class!")

.setContentTitle("You have a class!")

.setContentText("You will have a class soon!")

.setContentIntent(pendingIntent).setNumber(1).build();

notify.flags|= Notification.FLAG_AUTO_CANCEL;

NotificationManager manager = (NotificationManager)context

.getSystemService(Context.NOTIFICATION_SERVICE);

manager.notify(NOTIFICATION_FLAG,notify);

}

}

}

这是Manifest.xml:

android:name=".AutoReceiver"

android:label="@string/title_activity_detail" >

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值