Delphi 11.3 Android 10 接收共享文件代码示例
以下是 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'。
原文地址: https://www.cveoy.top/t/topic/n6zT 著作权归作者所有。请勿转载和采集!