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>