- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我的应用程序中,我设置了两个闹钟。在 toogleButton 上,我将使用以下代码将其设置为:
case R.id.toggleButtonTwoMonth:
myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE);
if (tButtonTwoMonth.isChecked()) {
Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit();
//For Broadcast Alarm
Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1);
// for the GST 17 August 2011
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2);
}
else {
Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit();
//alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth);
}
break;
但是我没有在那个期望的时间收到 amarm 通知,如果切换打开。现在,在警报时间过后,如果我关闭然后再打开,那么我会收到警报。
那么我的代码有什么问题?请帮助我。
已编辑:
有了这个答案,我已经解决了多次设置闹钟的问题:How can I setup multiple alarms in Android?
但我想知道如何处理它。我的意思是如何处理具有不同消息的接收器上的警报?
我更新后的多重警报代码如下:
//For Broadcast Alarm
Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1);
// for the GST 17 August 2011
alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 1, in, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2);
接收方代码如下:
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// My Notification Code
notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.app_icon;
CharSequence text = "Your tax amount due period";
CharSequence contentTitle = "Tax Calculator App";
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
System.out.println("the Date is: "+(cal.getTime().getDate())+" "+ (cal.getTime().getMonth())+" "+ (cal.get(Calendar.YEAR)));
if((cal.getTime().getDate()==18) && (cal.getTime().getMonth()==5) && (cal.get(Calendar.YEAR)==2011)){
contentText = "Your GST tax amount is due on 20 June 2011";
}
else if((cal.getTime().getDate()==17) && (cal.getTime().getMonth()==7) && (cal.get(Calendar.YEAR)==2011)){
contentText = "Your GST tax amount is due on 19th August, 2011";
}
else{
contentText = "Your GST tax amount is due on Falana Dhikna Date";
}
long when = System.currentTimeMillis();
intent = new Intent(context, NotificationViewer.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
notification = new Notification(icon,text,when);
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate; // To vibrate the Device
notification.ledARGB = Color.RED;
notification.ledOffMS = 300;
notification.ledOnMS = 300;
notification.defaults |= Notification.DEFAULT_LIGHTS;
//notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(NotificationConstants.NOTIFICATION_ID, notification);
}
现在如何处理那个不同的警报??帮助我。谢谢。
已编辑
请看这段代码:
case R.id.toggleButtonTwoMonth:
myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE);
if (tButtonTwoMonth.isChecked()) {
Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit();
//For Broadcast Alarm
//Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
// ===================== GST ALARM FOR THE TWO MONTHS ==========================
// for the GST 20 June 2011
AM_2M_GST_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in1 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in1.putExtra("MyMessage","Your GST tax is due on 20 June 2011");
PI_2M_GST_1 = PendingIntent.getBroadcast(this, 0, in1, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0);
AM_2M_GST_1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), PI_2M_GST_1);
// for the GST 19 August 2011
AM_2M_GST_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in2 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in2.putExtra("MyMessage","Your GST tax is due on 19 August 2011");
PI_2M_GST_2 = PendingIntent.getBroadcast(this, 1, in2, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0);
AM_2M_GST_2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),PI_2M_GST_2);
// for the GST 19 October 2011
AM_2M_GST_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in3 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in3.putExtra("MyMessage","Your GST tax is due on 19 October 2011");
PI_2M_GST_3 = PendingIntent.getBroadcast(this, 2, in3, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_19_October_2011 = Calendar.getInstance();
calendar_GST_19_October_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_19_October_2011.set(2011, 9, 19,mHour, mMinute, 0);
AM_2M_GST_3.set(AlarmManager.RTC_WAKEUP, calendar_GST_19_October_2011.getTimeInMillis(),PI_2M_GST_3);
// for the GST 17 December 2011
AM_2M_GST_4 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in4 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in4.putExtra("MyMessage","Your GST tax is due on 17 December 2011");
PI_2M_GST_4 = PendingIntent.getBroadcast(this, 3, in4, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_17_December_2011 = Calendar.getInstance();
calendar_GST_17_December_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_December_2011.set(2011, 11, 17,mHour, mMinute, 0);
AM_2M_GST_4.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_December_2011.getTimeInMillis(),PI_2M_GST_4);
// for the GST 20 February 2012
AM_2M_GST_5 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in5 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in5.putExtra("MyMessage","Your GST tax is due on 18 February 2012");
PI_2M_GST_5 = PendingIntent.getBroadcast(this, 4, in5, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_18_February_2012 = Calendar.getInstance();
calendar_GST_18_February_2012.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_February_2012.set(2012, 1, 18,mHour, mMinute, 0);
AM_2M_GST_5.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_February_2012.getTimeInMillis(),PI_2M_GST_5);
// for the GST 27 April 2012
AM_2M_GST_6 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in6 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in6.putExtra("MyMessage","Your GST tax is due on 27 April 2012");
PI_2M_GST_6 = PendingIntent.getBroadcast(this, 5, in6, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_GST_27_April_2012 = Calendar.getInstance();
calendar_GST_27_April_2012.setTimeInMillis(System.currentTimeMillis());
calendar_GST_27_April_2012.set(2012, 3, 27,mHour, mMinute, 0);
AM_2M_GST_6.set(AlarmManager.RTC_WAKEUP, calendar_GST_27_April_2012.getTimeInMillis(),PI_2M_GST_6);
// ===================== PROVISIONAL ALARM FOR THE TWO MONTHS ==========================
// for the PROVISIONAL 26 August 2011
AM_2M_PROVISIONAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in7 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in7.putExtra("MyMessage","Your PROVISIONAL tax is due on 26 August 2011");
PI_2M_PROVISIONAL_1 = PendingIntent.getBroadcast(this, 6, in7, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_26_August_2011 = Calendar.getInstance();
calendar_PROVISIONAL_26_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_26_August_2011.set(2011, 7, 26,mHour, mMinute, 0);
AM_2M_PROVISIONAL_1.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_26_August_2011.getTimeInMillis(),PI_2M_PROVISIONAL_1);
// for the PROVISIONAL 13 January 2012
AM_2M_PROVISIONAL_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in8 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in8.putExtra("MyMessage","Your PROVISIONAL tax is due on 13 January 2012");
PI_2M_PROVISIONAL_2 = PendingIntent.getBroadcast(this, 7, in8, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_13_January_2012 = Calendar.getInstance();
calendar_PROVISIONAL_13_January_2012.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_13_January_2012.set(2012, 0, 13,mHour, mMinute, 0);
AM_2M_PROVISIONAL_2.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_13_January_2012.getTimeInMillis(),PI_2M_PROVISIONAL_2);
// for the PROVISIONAL 5 May 2012
AM_2M_PROVISIONAL_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in9 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in9.putExtra("MyMessage","Your PROVISIONAL tax is due on 5 May 2012");
PI_2M_PROVISIONAL_3 = PendingIntent.getBroadcast(this, 8, in9, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_PROVISIONAL_5_May_2012 = Calendar.getInstance();
calendar_PROVISIONAL_5_May_2012.setTimeInMillis(System.currentTimeMillis());
calendar_PROVISIONAL_5_May_2012.set(2012, 4, 5,mHour, mMinute, 0);
AM_2M_PROVISIONAL_3.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_5_May_2012.getTimeInMillis(),PI_2M_PROVISIONAL_3);
// ===================== TERMINAL ALARM FOR THE TWO MONTHS ==========================
// for the TERMINAL 5 April 2012
AM_2M_TERMINAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent in10 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in10.putExtra("MyMessage","Your TERMINAL tax is due on 5 APRIL 2012");
PI_2M_TERMINAL_1 = PendingIntent.getBroadcast(this, 9, in10, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar_TERMINAL_5_APRIL_2012 = Calendar.getInstance();
calendar_TERMINAL_5_APRIL_2012.setTimeInMillis(System.currentTimeMillis());
calendar_TERMINAL_5_APRIL_2012.set(2012, 3, 5,mHour, mMinute, 0);
AM_2M_TERMINAL_1.set(AlarmManager.RTC_WAKEUP, calendar_TERMINAL_5_APRIL_2012.getTimeInMillis(),PI_2M_TERMINAL_1);
}
else {
Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show();
prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit();
AM_2M_GST_1.cancel(PI_2M_GST_1);
AM_2M_GST_2.cancel(PI_2M_GST_2);
AM_2M_GST_3.cancel(PI_2M_GST_3);
AM_2M_GST_4.cancel(PI_2M_GST_4);
AM_2M_GST_5.cancel(PI_2M_GST_5);
AM_2M_GST_6.cancel(PI_2M_GST_6);
AM_2M_PROVISIONAL_1.cancel(PI_2M_PROVISIONAL_1);
AM_2M_PROVISIONAL_2.cancel(PI_2M_PROVISIONAL_2);
AM_2M_PROVISIONAL_3.cancel(PI_2M_PROVISIONAL_3);
AM_2M_TERMINAL_1.cancel(PI_2M_TERMINAL_1);
//alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth);
}
break;
现在。在这里我收到了通知。但我希望它对所有人分开。意味着如果已经存在一个并且如果生成了新的那么它不应该更新已经存在的但应该创建新的单独的它。谢谢。
最佳答案
好吧,你为什么不这样做
Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class);
in.putExtra("MyMessage","Your tax is due on blah blah blah");
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
并且在onRecieve
简单地从 Intent 中检索消息
public void onReceive(Context context, Intent intent) {
// blah blah
Toast.show(context,intent.getStringExtra("MyMessage"),Toast.LENGTH_LONG).show();
关于Android:多重警报不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8665021/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!