簡體   English   中英

如何更新廣播接收器。 (多次通知)

[英]How to update broadcast receiver. (multiple notification)

每次設置通知/警報管理器時,BroadcastReceiver中的變量都不會更新。

在此處輸入圖片說明

在此處輸入圖片說明

“接收者(回收者)”來自一個片段。

接收器”來自BroadcastReceiver類。

onCreateView

intentAlarmManager = new Intent(context, NotificationReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intentAlarmManager, PendingIntent.FLAG_UPDATE_CURRENT);

通知方式

    private void setNotification(int hour, int min, int interval, int uniqueID) {

    //get instance of the calendar
    calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, min);
    //create delayed intent
    pendingIntent = PendingIntent.getBroadcast(context, uniqueID, intentAlarmManager, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * (interval * 30), pendingIntent);


}

回收站將其附加到開關偵聽器

setNotification(Integer.parseInt(model.getHour()), Integer.parseInt(model.getMinute()), Integer.parseInt(model.getInterval()), Integer.parseInt(model.getTime()));

接收器

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intentToStartWhenAlarmSets = new Intent(context, LoginActivity.class);
      PendingIntent pendingIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), intentToStartWhenAlarmSets, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("Content Title")
                .setContentText("Notify " + HomeFragment.notifMedName)
                .setSound(notifSound)
                .setVibrate(pattern)
                //swipable
                .setAutoCancel(true);
        Log.d(ContentValues.TAG, "receiver " + HomeFragment.notifMedName);

        notificationManager.notify((int) System.currentTimeMillis(), builder.build());

我想,我想通了。 盡管我不確定這是否是最佳/正確的方法(不過我無法正常工作)。

所以在我的接收器類中,我添加了

intent.getStringExtra("string);

在我的片段中我添加了

intentAlarmManager.putExtra("string", notifMedName);
getActivity().sendBroadcast(intentAlarmManager);

而且我還將所有待處理的意圖從context更改為getActivity()

如果你們有更好的解決方案,請隨時回答。

更多信息在這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM