Einzelnen Beitrag anzeigen

Stewag

Registriert seit: 12. Jun 2008
161 Beiträge
 
Delphi 12 Athens
 
#1

Delphi 12 & Android: Zugriff auf externe Zwischenablage nicht möglich

  Alt 20. Feb 2024, 08:56
Ich beobachte ein seltsames Phänomen: Eine App, die unter Delphi 11 auf die Zwischenablage, die außerhalb der App erstellt wurde, zugreift, kann dies unter Delphi 12 nicht mehr.
An der Android Version liegt es nicht, denn es ist dieselbe Hardware.

Hier der Code, der unter D11 korrekt auf die ZA zugreift:
Code:
var
  clp: IFMXClipboardService;
  Value: TValue; // benötigt System.Rtti
begin
  if TryGetClipboardService(clp) then
  begin
    Value := clp.GetClipboard;
    if Value.IsEmpty = false then
    begin
      if Value.IsType<string> = true then
          Edit1.Text := Value.ToString
    end
  end
end;
Ich habe es auch mit dem Sample Demo Code aus Delphi 12 ("CopyPasteDemo") probiert.
Darin wird dieser Code für den Zugriff auf die Zwischenablage verwendet:
Code:
procedure TForm3.Button1Click(Sender: TObject);
var
  Svc: IFMXClipboardService;
  Value: TValue;
  Bitmap: TBitmap;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, Svc) then
  begin
    Value := Svc.GetClipboard;
    if not Value.IsEmpty then
    begin
      if Value.IsType<string> then
      begin
        PasteLabel.Text := Value.ToString;
        PasteImage.Bitmap := nil;
      end
      else if Value.IsType<TBitmapSurface> then
      try
        PasteLabel.Text := string.Empty;
        Bitmap := TBitmap.Create;
        try
          Bitmap.Assign(Value.AsType<TBitmapSurface>);
          PasteImage.Bitmap := Bitmap;
        finally
          Bitmap.Free;
        end;
      finally
        Value.AsType<TBitmapSurface>.Free;
      end;
    end;
  end;
end;
Auch das Demo kann zwar unter Windows mit dem "Paste" Button auf Text der Zwischenablage zugreifen, die nicht in der App erstellt wurde.
Unter Android ist das aber nicht möglich, der Paste Button zeigt dann nur Text der Zwischenablage, der zuvor im Register "Copy" erstellt wurde.

Die Verwendung von IFMXExtendedClipboardService, wie in diesem Artikel beschrieben, war auch nicht erfolgreich:
https://lecturepress.com/academy/obj...ard-in-delphi/

Ist das ein Bug oder muss der Zugriff auf die allgemeine ZA irgendwo autorisiert werden? (Die Berechtigung "Externen Speicher lesen" ist aktiviert)
Steffen

Geändert von Stewag (20. Feb 2024 um 11:01 Uhr)
  Mit Zitat antworten Zitat