以下是 Delphi 11.3 上接收共享文件的示例代码:

uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net, Androidapi.Helpers;

procedure TForm1.Button1Click(Sender: TObject);
var
  PackageManager: JPackageManager;
  Intent: JIntent;
  Uri: Jnet_Uri;
  ClipData: JClipData;
  ClipDataItem: JClipData_Item;
  ClipDescription: JClipDescription;
  FileName: string;
  FileStream: TFileStream;
begin
  PackageManager := SharedActivity.getPackageManager;
  Intent := SharedActivity.getIntent;

  if JIntent.JavaClass.ACTION_SEND.Equals(Intent.getAction) then
  begin
    ClipData := Intent.getClipData;
    if ClipData <> nil then
    begin
      ClipDataItem := ClipData.getItemAt(0);
      ClipDescription := ClipData.getDescription;
      if ClipDescription.hasMimeType(StringToJString('image/*')) or
         ClipDescription.hasMimeType(StringToJString('video/*')) then
      begin
        Uri := ClipDataItem.getUri;
        FileName := JStringToString(TJDocumentFile.JavaClass.fromSingleUri(SharedActivity, Uri).getName);
        FileStream := TFileStream.Create(TPath.Combine(TPath.GetSharedDocumentsPath, FileName), fmCreate);
        try
          FileManager.CopyFile(Uri, FileStream);
        finally
          FileStream.Free;
        end;
      end;
    end;
  end;
end;

此代码将在按钮单击事件中检查当前活动的意图是否为 'ACTION_SEND',如果是,则检查剪贴板中是否包含文件,如果是,则从第一个剪贴板项中获取 URI,并将其复制到共享文档路径中的文件流中。请注意,此代码仅处理 'image/' 或 'video/' MIME 类型的文件。如果需要处理其他类型的文件,请相应地更改代码。

同时,您需要添加以下单元:'Androidapi.JNI.Net'、'Androidapi.JNI.JavaTypes'、'Androidapi.JNI.GraphicsContentViewText' 和 'Androidapi.Helpers'。

Delphi 11.3 Android 10 接收共享文件代码示例

原文地址: https://www.cveoy.top/t/topic/n6zT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录