Android 广播接收器需要时间来接收广播 public synchronized void startAppOnScheduleTime(最终整数时间) { //为开始时间创建新日历实例 最终日历开始时间=Calendar.getInstance(); //将时间设置

Android 广播接收器需要时间来接收广播 public synchronized void startAppOnScheduleTime(最终整数时间) { //为开始时间创建新日历实例 最终日历开始时间=Calendar.getInstance(); //将时间设置,android,Android,广播接收器需要时间来接收广播 public synchronized void startAppOnScheduleTime(最终整数时间) { //为开始时间创建新日历实例 最终日历开始时间=Calendar.getInstance(); //将时间设置为用户指定的开始时间 开始时间设置(日历小时/天,时间/100); 开始时间设置(Calendar.MINUTE,时间%100); startTime.set(Calendar.SECOND,1);//增加1秒的额外延迟 /*System.ou

广播接收器需要时间来接收广播
public synchronized void startAppOnScheduleTime(最终整数时间)
{
//为开始时间创建新日历实例
最终日历开始时间=Calendar.getInstance();
//将时间设置为用户指定的开始时间
开始时间设置(日历小时/天,时间/100);
开始时间设置(Calendar.MINUTE,时间%100);
startTime.set(Calendar.SECOND,1);//增加1秒的额外延迟
/*System.out.println(“时间集为”+startTime.getTime().toString());
System.out.println(“时间设置为”+Long.toString(startTime.getTimeInMillis());
日期日期=新日期(startTime.getTimeInMillis());
SimpleDataFormat格式化程序=新的SimpleDataFormat(“HH:mm:ss:SSS”);
字符串dateFormatted=格式化程序。格式(日期)*/

如果(startTime.getTimeInMillis()-Calendar.getInstance().getTimeInMillis())正在使用模拟器?否,我没有使用模拟器。为什么要执行
startTime.set(Calendar.HOUR\u OF_DAY,time/100);startTime.set(Calendar.MINUTE,time%100)
。你不应该使用
时间/60
时间%60
?我这样做是因为我得到的时间是整数,比如说820(8:20),除以100,我把一天中的小时设置为8,当时间820%100时,我得到的分钟数为20。你在使用模拟器吗?不,我没有使用模拟器。你为什么要做
startTime.set(Calendar.HOUR\u OF_DAY,time/100);startTime.set(Calendar.MINUTE,time%100);
。你不应该使用
time/60
time%60
?我这样做是因为我得到的时间是整数,比如说820(8:20),除以100我将一天中的小时设置为8,当时间820%100时,我得到的分钟数为20
public synchronized void startAppOnScheduleTime(final int time)
    {
      //create new calendar instance for your start time
       final Calendar startTime= Calendar.getInstance();

     //set the time to USER SPECIFIED start time
       startTime.set(Calendar.HOUR_OF_DAY, time / 100);
       startTime.set(Calendar.MINUTE, time % 100);
       startTime.set(Calendar.SECOND, 1); // Add 1 second of additional delay

       /*System.out.println(" time set is  "+startTime.getTime().toString());

       System.out.println(" time set is  "+Long.toString(startTime.getTimeInMillis()));
       Date date = new Date(startTime.getTimeInMillis());
       SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
       String dateFormatted = formatter.format(date);*/

       if (startTime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis() <= 0)
       {
           // Time has already past, schedule for next day
           startTime.add(Calendar.DAY_OF_MONTH, 1);
       }
       try
       {
             AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE);

             //create a pending intent to be called at startTime
              Intent myIntent=new Intent(getApplicationContext(), StartApplicationReceiver.class);
             PendingIntent startPI = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND), PendingIntent.FLAG_UPDATE_CURRENT);

             //schedule time for pending intent, and set the interval to day so that this event will repeat at the selected time every day
             am.setRepeating(AlarmManager.RTC_WAKEUP, startTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, startPI);
        }
       catch(Exception ex)
       {
           ex.printStackTrace();
       }

    }

//my receiver

public class StartApplicationReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent)
    {
        //on Receive of Start Application Receiver
        try
        {

                //here iam starting an application with the package name 
            }

         } 
        catch (Exception e) 
         { 
            //You don't have the application installed
            e.printStackTrace();
         }

    }

}
<receiver android:name="packagename.StartApplicationReceiver"
            android:priority="999"></receiver>