这段代码是从 FMX.Notification.Android 中抽出来的,从中我们可以学习如何注册一个 Intent 分享数据。FMX 目前我也是在学习,所以有些东西我也不好乱解释,毕竟俺不是很熟,误人子弟还是不要了。大家自己看源码分析好了。
procedure TNotificationCenterAndroid.ScheduleNotification(const ANotification: TNotification); function CreateNotificationAlarmIntent(const AID: Integer): JPendingIntent; var Intent: JIntent; Alarm: JFMXNotificationAlarm; begin Alarm := TJFMXNotificationAlarm.Create; Intent := TJIntent.Create; Intent.setClass(SharedActivityContext, Alarm.getClass); Intent.setAction(TJFMXNotificationAlarm.JavaClass.ACTION_FMX_NOTIFICATION); SaveNotificationIntoIntent(Intent, ANotification, AID); Result := TJPendingIntent.JavaClass.getBroadcast(SharedActivityContext, AID, Intent, TJPendingIntent.JavaClass.FLAG_UPDATE_CURRENT); end; var PendingIntent: JPendingIntent; ID: Integer; begin if not ANotification.Name.IsEmpty and FExternalStore.Contains(ANotification.Name) then CancelNotification(ANotification.Name); ID := TGeneratorUniqueID.GenerateID; PendingIntent := CreateNotificationAlarmIntent(ID); FExternalStore.SaveNotification(ANotification, ID); SharedAlarmManager.&set(TJAlarmManager.JavaClass.RTC_WAKEUP, DateTimeLocalToUnixMSecGMT(ANotification.FireDate), PendingIntent); end;