Ver Mensaje Individual
  #7  
Antiguo 18-12-2024
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 72
Reputación: 7
dani36652 Va camino a la fama
Hola qué tal? Ayer llegué a tu casa tarde y no me dió tiempo de analizarlo hasta hoy en la oficina...
Intenta esto, espero que te funcione:
Código Delphi [-]
uses
  {$IFDEF ANDROID}
  Androidapi.JNI.Webkit, FMX.VirtualKeyboard,
  Androidapi.JNI.Print, Androidapi.JNI.Util,
  fmx.Platform.Android, System.Android.Notification,
  Androidapi.jni,fmx.helpers.android, Androidapi.Jni.app,
  Androidapi.Jni.GraphicsContentViewText, Androidapi.JniBridge,
  Androidapi.JNI.Os, Androidapi.Jni.Telephony,
  Androidapi.JNI.JavaTypes,Androidapi.Helpers,
  Androidapi.JNI.Widget,System.Permissions, Androidapi.Jni.Embarcadero,
  FMX.DialogService,Androidapi.Jni.Provider,Androidapi.Jni.Net,
  fmx.TextLayout,AndroidAPI.JNI.Support,
 {$ENDIF}

procedure Borra_Notifi(Id : String; FH : String); // Este procedimiento ya lo tienes
function ExtractName(const AStr: string): string; // Se crea esta nueva funcion

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.Text := JStringToString(Notifications);
      I := 0;
      Found := False;
      while not Found and (I < NotificationsList.Count) do
        if ExtractName(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;
Responder Con Cita