Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi 12 & Android: Zugriff auf externe Zwischenablage nicht möglich (https://www.delphipraxis.net/214676-delphi-12-android-zugriff-auf-externe-zwischenablage-nicht-moeglich.html)

Stewag 20. Feb 2024 08:56


Delphi 12 & Android: Zugriff auf externe Zwischenablage nicht möglich
 
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)

Rollo62 20. Feb 2024 11:22

AW: Delphi 12 & Android: Zugriff auf externe Zwischenablage nicht möglich
 
Hast Du mal das IFMXExtendedClipboardService Interface probiert?

Zitat:

Die Android-Zwischenablage unterstützt keine Bilder. Damit Benutzer die Bilder zwischen Ihren eigenen Anwendungen kopieren und einfügen können, kann stattdessen ein benutzerdefiniertes Format verwendet werden.
Bei Kastri gibt es etwas für Bilder.
https://github.com/DelphiWorlds/Kast...Helper.iOS.pas

Stewag 20. Feb 2024 12:00

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

Hast Du mal das IFMXExtendedClipboardService Interface probiert?
ja, hatte ich ja geschrieben.

In der ZA steht nur Text. Das mit den Bildern steht nur so im Sample der D12 Demo.

Aber auch mit Text klappt es nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz