Ver Mensaje Individual
  #8  
Antiguo 18-12-2024
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 560
Reputación: 18
jhonalone Va por buen camino
Hola Dani. Muchas gracias por la generosidad con que me regalas tu tiempo, tu esfuerzo y tus conocimientos.
No puedo probar tu código.
Creo que se te ha olvidado copiar la declaración de la función ExtractName();
Quizá así no sea necesaria esta función:
Código Delphi [-]
procedure TForm1.Borra_Notifi(Id, FH: String); //Tu procedimiento quedaría así:

  function DateTimeLocalToUnixMSecGMT(const ADateTime: TDateTime): Int64;
  begin
    Result := DateTimeToUnix(ADateTime) * MSecsPerSec - Round(TTimeZone.Local.UtcOffset.TotalMilliseconds);
  end;
var
  NotificationsList: TStringList;
  Notifications: JString;
  I: Integer;
  Found: Boolean;
  PreferenceEditor: JSharedPreferences_Editor;
  FPreference: JSharedPreferences;
begin
    if DateTimeLocalToUnixMSecGMT(Now) > DateTimeLocalToUnixMSecGMT(StrToDateTime(FH)) then
      Exit; // Si la notificación es anterior no hace nada
    // ShowMessage('Borramos...'+Id+'=='+FH); para controlar que se ha borrado

    NotificationC.RequestPermission;

    (*
      Elimina la notificación mediante el nombre a nivel nativo
    *)
    FPreference := TAndroidHelper.Context.getSharedPreferences(TJNotificationAlarm.JavaClass.NOTIFICATION_CENTER, TJContext.JavaClass.MODE_PRIVATE);
    NotificationsList := TStringList.Create;
    try
      Notifications := FPreference.getString(TJNotificationAlarm.JavaClass.SETTINGS_NOTIFICATION_IDS, nil);
      NotificationsList.Add(JStringToString(Notifications));
      I := 0;
      Found := False;
      while not Found and (I < NotificationsList.Count) do
        if NotificationsList[i] = Id then
          Found := True
        else
          Inc(I);

      if Found then
      begin
        PreferenceEditor := FPreference.edit;
        try
          NotificationsList.Delete(I);
          PreferenceEditor.putString(TJNotificationAlarm.JavaClass.SETTINGS_NOTIFICATION_IDS, StringToJString(NotificationsList.Text));
        finally
          PreferenceEditor.commit;
        end;
      end;
    finally
      NotificationsList.Free;
    end;

    //Cancela la notificación mediante el TNotificationCenter
    NotificationC.CancelNotification(Id);
end;
Un cordial saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 18-12-2024 a las 18:50:51.
Responder Con Cita