Хорошо, я попробовал два примера AlarmManager - один с сайта commonsware, а другой с сайта manning.
Код, с которым я сейчас работаю, взят с сайта Мэннинга: [http://unlocking -android.googlecode.com / svn / chapter8 / trunk / SimpleAlarm /] [1]
Существует два класса: AlarmReceiver и GenerateAlarm. У кого-нибудь есть идеи, почему тост не будет отображаться в эмуляторе? Я думал, что это потому, что я нахожусь в восточном часовом поясе, и он использует UTC, но я возился с разными вещами, и ни одна из них, кажется, не работает.
public class GenerateAlarm extends Activity {
Toast mToast;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.set_alarm_button);
button.setOnClickListener(this.mOneShotListener);
}
private OnClickListener mOneShotListener = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(GenerateAlarm.this, AlarmReceiver.class);
PendingIntent appIntent = PendingIntent.getBroadcast(GenerateAlarm.this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
// calendar.add(Calendar.MINUTE, 1);
calendar.add(Calendar.SECOND, 10);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), appIntent);
if (GenerateAlarm.this.mToast != null) {
GenerateAlarm.this.mToast.cancel();
}
GenerateAlarm.this.mToast = Toast.makeText(GenerateAlarm.this, R.string.alarm_message, Toast.LENGTH_LONG);
//GenerateAlarm.this.mToast.show();
}
};
}
public class AlarmReceiver extends BroadcastReceiver {
public void onReceiveIntent(Context context, Intent intent) {
Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show();
}
@Override
public void onReceive(Context context, Intent intent) {
}
}