【发布时间】:2014-11-22 06:30:46
【问题描述】:
我看了几本指南,基本上都做到了:
Main.java
public class Main extends Activity
{
PendingIntent pendingIntent;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
cal.set(Calendar.HOUR_OF_DAY, 22);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Intent myIntent = new Intent(Main.this, Receiver.class);
pendingIntent = PendingIntent.getBroadcast(Main.this, 0, myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, cal.getTimeInMillis(), pendingIntent);
}
}
Receiver.java
public class Receiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
}
}
AndroidManifest.xml 还包含<receiver android:name=".Receiver"/>。
因此,根据我的阅读,无论应用程序是否实际运行,只要在纽约晚上 10 点,上述代码都应该显示toast。目前,它什么也不做,即使应用程序正在运行。看起来 Receiver 类甚至没有被调用。我错过了什么?
【问题讨论】:
标签: java android alarmmanager android-pendingintent