Android AlarmManager - PullRequest
       9

Android AlarmManager

0 голосов
/ 06 августа 2010

Хорошо, я попробовал два примера 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) {

}
}

1 Ответ

2 голосов
/ 07 августа 2010

Вы должны добавить свой тост в методе onReceived, где вы должны добавить обработку полученного намерения.

@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show();
}

onReceiveIntent не является методом broadcastreceiver

public abstract void onReceive (Контекст контекста, намерение Intent)

Так как: API Level 1 Этот метод вызывается, когда BroadcastReceiver получает широковещательную рассылку Intent.

...