我正在Android中建立一個水提醒應用程序,我想提醒用戶在白天多次喝水,而用戶不必打開應用程序(以便意圖廣播接收機將被髮送)。什麼是最好的方式來做到這一點?這裏是我的代碼:多個廣播與AlarmManager和BroadcastReceiver自我調用
AlertReceiver.java MainActivity.java
Long alertTime = nextAlarm.getTimeInMillis();
Intent alertIntent = new Intent(this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime,
PendingIntent.getBroadcast(this, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
提前
感謝
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
public class AlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
createNotification(context, "DRINK", "Time to hydrate", "Alert");
}
public void createNotification(Context context, String msg, String msgText, String msgAlert) {
PendingIntent notificationIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainActivity.class), 0);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_announcement)
.setContentTitle(msg)
.setContentText(msgText)
.setTicker(msgAlert);
notificationBuilder.setContentIntent(notificationIntent);
notificationBuilder.setDefaults(Notification.DEFAULT_ALL);
notificationBuilder.setAutoCancel(true);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, notificationBuilder.build());
}
}
部分!
您可以安排在下一杯酒報警在你的'AlertReceiver'中顯示通知。應該能夠像你在活動中一樣完成。我還建議創建另一個接收器來查找BOOT_COMPLETED廣播,因爲當設備斷電時所有報警都將被刪除。 –
所以你的意思是我應該完成確定下一次報警應該在'AlertReceiver'裏面的整個過程嗎? –
這是一種方法,是的。這樣,任何時候顯示報警時,它都會自動安排下一個報警。注意:用戶仍然需要打開應用程序一次,以便可以註冊初始警報。但在此之後,您的廣播接收機可以處理調度和顯示報警。 –