Android 使用一个接收器设置2个警报
我需要触发两个警报。如果只有一个警报,第一个警报将正确触发。如果我包含第二个的代码,则报警重叠,无法实现所需的功能。我的问题是我需要两个广播接收器还是一个? 第一次警报:Android 使用一个接收器设置2个警报,android,broadcastreceiver,alarm,Android,Broadcastreceiver,Alarm,我需要触发两个警报。如果只有一个警报,第一个警报将正确触发。如果我包含第二个的代码,则报警重叠,无法实现所需的功能。我的问题是我需要两个广播接收器还是一个? 第一次警报: public void triggerEnable(boolean enableData, int hourInDay, int minInDay) { Calendar calendar = Calendar.getInstance(); //if (enableData) { cal
public void triggerEnable(boolean enableData, int hourInDay, int minInDay) {
Calendar calendar = Calendar.getInstance();
//if (enableData) {
calendar.set(Calendar.HOUR_OF_DAY, hourInDay);
calendar.set(Calendar.MINUTE, minInDay);
// } else {
// calendar.set(Calendar.HOUR_OF_DAY, hourInDay);
// calendar.set(Calendar.MINUTE, minInDay);
// }
calendar.set(Calendar.SECOND, 0);
Intent broadcastIntent = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE");
broadcastIntent.putExtra("FLAG_KEY", enableData);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi);
}
广播接收机:
@Override
public void onReceive(Context context, Intent intent) {
if(CONN_ACTION.equals(intent.getAction())) {
boolean enableConn = intent.getBooleanExtra("FLAG_KEY", false);
objNetwork.setMobileDataEnabled(context, enableConn);
//what do I do here to have different values for the second alarm?
}
}
}
如android文档中所述 如果已经为同一目的地安排了报警,则将首先取消报警。
我相信你需要一个接一个地设置时间。如android文档中所述 如果已经为同一目的地安排了报警,则将首先取消报警。
我相信你需要一个接一个地设置时间。你必须创建两个待定的意图
Intent alarm1 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE");
broadcastIntent.putExtra("FLAG_KEY", enableData);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, alarm1 , PendingIntent.FLAG_UPDATE_CURRENT);
Intent alaram2 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE");
broadcastIntent.putExtra("FLAG_KEY", enableData);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, alaram2 , PendingIntent.FLAG_UPDATE_CURRENT);
然后你必须注册两个广播接收器
private static BroadcastReceiver alarm1= null;
private static BroadcastReceiver alaram2= null;
alarm1= new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
if(CONN_ACTION.equals(intent.getAction())) {
boolean enableConn = intent.getBooleanExtra("FLAG_KEY", false);
objNetwork.setMobileDataEnabled(context, enableConn);
}
}
alaram2=new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
//put your code for the second alarm here
}
试试这个。我相信这会起作用。您必须创建两个挂起的意图
Intent alarm1 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE");
broadcastIntent.putExtra("FLAG_KEY", enableData);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, alarm1 , PendingIntent.FLAG_UPDATE_CURRENT);
Intent alaram2 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE");
broadcastIntent.putExtra("FLAG_KEY", enableData);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, alaram2 , PendingIntent.FLAG_UPDATE_CURRENT);
然后你必须注册两个广播接收器
private static BroadcastReceiver alarm1= null;
private static BroadcastReceiver alaram2= null;
alarm1= new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
if(CONN_ACTION.equals(intent.getAction())) {
boolean enableConn = intent.getBooleanExtra("FLAG_KEY", false);
objNetwork.setMobileDataEnabled(context, enableConn);
}
}
alaram2=new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
//put your code for the second alarm here
}
试试这个。我相信这会起作用。这可以通过使用单个广播接收器,但使用具有不同ID的挂起意图来实现。 现在,您正在做的是发送多个具有相同ID的挂起意图。因此,它们是重叠的。您需要做的是发送另一个具有不同ID的未决意图。
第一意图
PendingIntent pi = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
第二意图
PendingIntent pi = PendingIntent.getBroadcast(this, 1, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
然后在alarmManager的帮助下,激发这些等待广播接收器接收的意图。
希望对您有所帮助这可以通过使用单个broadcastreceiver,但使用具有不同ID的挂起意图来实现。 现在,您正在做的是发送多个具有相同ID的挂起意图。因此,它们是重叠的。您需要做的是发送另一个具有不同ID的未决意图。
第一意图
PendingIntent pi = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
第二意图
PendingIntent pi = PendingIntent.getBroadcast(this, 1, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
然后在alarmManager的帮助下,激发这些等待广播接收器接收的意图。
希望它能有所帮助我该如何激发这些未决意图?我该如何激发这些未决意图?我不知道,但这一个有一些严重的语法错误。它不工作。我不知道,但这一个有一些严重的语法错误。它不起作用了。