Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在指定时间发送PendingEvent_Java_Android - Fatal编程技术网

Java 如何在指定时间发送PendingEvent

Java 如何在指定时间发送PendingEvent,java,android,Java,Android,我有两个alarmManager类的实例。并设定一个: Calendar calendar = Calendar.getInstance(); calendar.set(calendar.HOUR_OF_DAY, hour); calendar.set(calendar.MINUTE, min); long sdl = calendar.getTimeInMillis(); Intent intent123 = ne

我有两个
alarmManager
类的实例。并设定一个:

        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.HOUR_OF_DAY, hour);
        calendar.set(calendar.MINUTE, min);
        long sdl = calendar.getTimeInMillis();
        Intent intent123 = new Intent(this,AlarmReceiver.class);
        int _id = (int) System.currentTimeMillis();
        PendingIntent appIntent = PendingIntent.getBroadcast(MainActivity.this, _id, intent123,PendingIntent.FLAG_IMMUTABLE);
        alarmManager = (AlarmManager) MainActivity.this.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, sdl, appIntent);
hour
min
从用户处接收

第二组:

   AlarmManager alarmManager = (AlarmManager) ActivityTimePicker.this.getSystemService(Context.ALARM_SERVICE);
   Calendar calendar = Calendar.getInstance();
   calendar.set(calendar.HOUR_OF_DAY, 24);
   calendar.set(calendar.MINUTE, 00);


   long sdl = calendar.getTimeInMillis();
   Intent intent = new Intent(this,Main2Activity.class);
   PendingIntent appIntent = PendingIntent.getActivity(this.getBaseContext(), 4534534, intent,PendingIntent.FLAG_CANCEL_CURRENT);
    alarmManager.set(AlarmManager.RTC_WAKEUP, sdl, appIntent);
这将每24小时发送一次。 但问题是,两者都是被发送的。但我想在自己的时间发送每个。 解决办法是什么? 谢谢大家!

publicstaticvoidsetrementer(上下文上下文、类cls、int-hour、int-min)
public static void setReminder(Context context,Class<?> cls,int hour, int min)
    {
        Calendar calendar = Calendar.getInstance();

        Calendar setcalendar = Calendar.getInstance();
        setcalendar.set(Calendar.HOUR_OF_DAY, hour);
        setcalendar.set(Calendar.MINUTE, min);
        setcalendar.set(Calendar.SECOND, 0);

        // cancel already scheduled reminders
        cancelReminder(context,cls);

        if(setcalendar.before(calendar))
            setcalendar.add(Calendar.DATE,1);

        // Enable a receiver

        ComponentName receiver = new ComponentName(context, cls);
        PackageManager pm = context.getPackageManager();

        pm.setComponentEnabledSetting(receiver,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);


        Intent intent1 = new Intent(context, cls);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, DAILY_REMINDER_REQUEST_CODE, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        am.setInexactRepeating(AlarmManager.RTC_WAKEUP, setcalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

    }
{ 日历=Calendar.getInstance(); Calendar setcalendar=Calendar.getInstance(); setcalendar.set(Calendar.HOUR\u OF_DAY,HOUR); setcalendar.set(Calendar.MINUTE,min); setcalendar.set(Calendar.SECOND,0); //取消已安排的提醒 取消提醒(上下文,cls); 如果(设置日历。在(日历)之前) setcalendar.add(Calendar.DATE,1); //启用接收器 ComponentName接收器=新的ComponentName(上下文,cls); PackageManager pm=context.getPackageManager(); pm.setComponentEnabledSetting(接收器、, PackageManager.COMPONENT\u ENABLED\u STATE\u ENABLED, PackageManager.Don_KILL_APP); 意向意向1=新意向(上下文,cls); PendingEvent PendingEvent=PendingEvent.getBroadcast(上下文、每日提醒、请求代码、意图1、PendingEvent.FLAG、更新、当前); AlarmManager am=(AlarmManager)context.getSystemService(ALARM\u服务); am.setInexactRepeating(AlarmManager.RTC_唤醒,setcalendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,PendingEvent); }

有关更多信息,请参阅此链接:

您到底想要实现什么?请澄清,因为我没有收到您的问题。当第一个PendingEvent发送到AlarmReceiver时,第二个PendingEvent发送到Main2活动。尝试将第二个alarmmanager设置为
alarmmanager.set(alarmmanager.RTC_WAKEUP,system.currenttimemillis()+24*60*60*1000,appIntent)
如果您想每天24小时重复一次alarmmanager,则应使用setRepeating方法。