Bazı Android uygulamalarında, şu özelliği entegre etmek istiyorum: Kullanıcı, bir şeyi hatırlatmak istediğinde bir zaman tanımlayabilir. Zaman geldiğinde, uygulama şu anda kullanıcı uygulamayı kullanmadığında bile bildirim çubuğunda bir bildirim oluşturmalıdır.Android için zamanlanmış bildirim (ör. Olaylar için) oluşturma
Bu amaçla, AlarmManager, NotificationManager und Notification.Builder sınıfları bakılacak olanlar, değil mi?
Önceden zamanlanmış bir bildirim nasıl oluşturabilirim?
public class AlarmNotificationReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
String additionalData = extras.getString("displayText");
// show the notification now
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification mNotification = new Notification(R.drawable.ic_launcher, context.getString(R.string.app_name), System.currentTimeMillis());
PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0); // open MainActivity if the user selects this notification
mNotification.setLatestEventInfo(context, context.getString(R.string.app_name), additionalData, pi);
mNotification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.DEFAULT_SOUND;
mNotificationManager.notify(1, mNotification);
}
}
}
:
<receiver android:name="AlarmNotificationReceiver"></receiver>
aldığı Şu alarmı kolları yeni sınıf dosyası oluşturun:
yayın alıcısı kayıt AndroidManifest için altında ekleyin: Kodum (şimdiye kadar) bu
kullanımı (MainActivity örneğin) bu kod artık 3 saniye alarm ayarlamak:
Intent i = new Intent(this, AlarmNotificationReceiver.class);
i.putExtra("displayText", "sample text");
PendingIntent pi = PendingIntent.getBroadcast(this.getApplicationContext(), 234324246, i, 0);
AlarmManager mAlarm = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
mAlarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3*1000, pi);
Bu işi yapmak için neyi değiştirmem gerekiyor? Teşekkür ederim!
iki sorun vardır: Ben kodunda değiştirdiğinizde
- Bildirim metni değiştirmez. Yalnızca PendingIntent.getBroadcast (...) içindeki requestCode'u değiştirdiğimde değişir. Bu talep kodu nedir? Rastgele bir değer mi, yoksa 0 mı?
- Telefonum yeniden başlatıldıktan sonra "planlanmış" bildirimi veya alarm gitti. Ama şimdi bunun normal davranış olduğunu gördüm, doğru mu? Bunu nasıl atlatabilirim?
Şimdiye kadar ne çalışmıyor? –