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的帮助下,激发这些等待广播接收器接收的意图。
希望它能有所帮助

我该如何激发这些未决意图?我该如何激发这些未决意图?我不知道,但这一个有一些严重的语法错误。它不工作。我不知道,但这一个有一些严重的语法错误。它不起作用了。