我是android新手。我想在本地设置Notification,每天在特定时间点击它。当我启动服务时......通知会立即触发......
我想知道如何在特定时间触发通知而不立即解雇
第1步:
public class startservice extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(startservice.this,MainActivity.class);
startservice.this.startService(intent);
}
});
}
}
第2步:开始服务
public class MainActivity extends Service {
AlarmManager am;
Calendar calendar;
int count=0;
@Override
public void onCreate() {
super.onCreate();
am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
calendar=Calendar.getInstance();
setNotification();
}
public void setNotification() {
Intent intent = new Intent(this, Startnotification.class);
calendar.set(Calendar.HOUR, 9); // At the hour you wanna fire
calendar.set(Calendar.MINUTE,12); // Particular minute
calendar.set(Calendar.SECOND, 0);
double x = Math.random();
String value=String.valueOf(x);
intent.putExtra("name", value);
sendBroadcast(intent);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, count,intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),3600000,pendingIntent);
count++;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
第3步:BroadcastReceiver
public class Startnotification extends BroadcastReceiver {
NotificationManager nm;
@SuppressWarnings("deprecation")
@Override
public void onReceive(Context context, Intent intent) {
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
String getvalue= intent.getStringExtra("name");
CharSequence from = getvalue;
CharSequence message = "Android calendar...";
PendingIntent contentIntent = PendingIntent.getService(context, 0, new Intent(),0);
Notification notif = new Notification(R.drawable.ic_launcher,"Android calendar...", System.currentTimeMillis());
notif.setLatestEventInfo(context, from, message, contentIntent);
nm.notify(1, notif);
System.out.println("BroadcastReceiver");
}
}
如何实现
提前致谢...
答案 0 :(得分:0)
在setNotification()
你正在打电话
sendBroadcast(intent);
立即拨打Startnotification.onReceive()
。
另外,您可以在Calendar实例中设置HOUR,如下所示:
calendar.set(Calendar.HOUR, 9); // At the hour you wanna fire
但是您没有明确地将AM / PM指示器设置为12小时(HOUR用于设置12小时时间)。这意味着AM / PM指示器仍将设置为您调用Calendar.getInstance()
时的状态。如果您运行此代码(例如,上午10:00)并将HOUR设置为9,则警报将立即关闭,因为时间已过去。