Ben gelecekteki olayların hatırlatıcı belirlemek için kullanılabilecek küçük bir uygulama var. Uygulamaya kullanıcının hatırlatılması gereken zamanı ayarlamak için bir AlarmManager kullanır. Alarm çaldığında, bir BroadcastReceiver bunu kaydeder ve sırayla kullanıcıyı bir tost ve durum çubuğunda bir bildirim yoluyla bilgilendirecek bir servis başlatır. bildirim ve tost doğru bilgileri görüntülemek içinYanlış ekstralar Tüm niyet ile alınan ancak birincisi
, bazı ekstra bilgi niyet ile birlikte geçirilir. Bir hatırlatma kaydedildiğinde ilk kez BroadcastReceiver tarafından alınan ve servise iletilen bilgi doğrudur. Fakat takip eden her hatırlatma için (yani BroadcastReceiver tarafından alınan her yeni amaç), gönderilen bilgiler farklı olduğunda bile bu bilgi aynı kalır. dizge "fan" ilk amacı ile yapılan bir ilave olarak konur Bir örnek olarak
, "fon" doğru BroadcastReceiver ile ekstre edilir. İkinci amaçta "bar" fazladan koyulursa, "foo" hala BroadcastReceiver tarafından çıkarılır. BroadcastReceiver sınıfında yöntemi -Intent intent = new Intent(ACTION_SET_ALARM);
intent.putExtra("desc", desc);
intent.putExtra("time", time);
intent.putExtra("dbId", dbId);
intent.putExtra("millis", millis);
PendingIntent pIntent = PendingIntent.getBroadcast(quickAlert.this, 0, intent, 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, millis, pIntent);
OnReceive():
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, AlertService.class);
String desc = intent.getStringExtra("desc").equals("") ? "": ": " + intent.getStringExtra("desc");
String time = intent.getStringExtra("time");
long dbId = intent.getLongExtra("dbId", -1);
long millis = intent.getLongExtra("millis", -1);
i.putExtra("desc", desc);
i.putExtra("time", time);
i.putExtra("dbId", dbId);
i.putExtra("millis", millis);
Log.d(TAG, "AlertReceiver: " + desc + ", " + time + ", " + dbId + ", " + millis);
Toast.makeText(context, "Reminder: " + desc, Toast.LENGTH_LONG).show();
context.startService(i);
}
niyet
Bu
niyet (ana UI sınıfı) alarm kaydeder ve geçen kod manifest içinde -filtre:<receiver android:name=".AlertReceiver">
<intent-filter>
<action android:name="com.aspartame.quickAlert.ACTION_SET_ALARM" />
</intent-filter>
</receiver>
Şimdi bir süredir bununla uğraştım, bu yüzden yardım çok çok takdir!
Mükemmel, teşekkür ederim! – aspartame