Delphi中可以使用Androidapi.JNI.Provider和Androidapi.JNI.JavaTypes单元来实现Android 10的文件分享。

以下是一个简单的示例代码,可以分享指定路径下的文件:

uses
  Androidapi.JNI.Provider,
  Androidapi.JNI.JavaTypes,
  System.IOUtils;

procedure ShareFile(const FilePath: string);
var
  Uri: Jnet_Uri;
  Intent: JIntent;
  ClipData: JClipData;
  ContentResolver: JContentResolver;
  ContentValues: JContentValues;
  FileName: string;
begin
  // 获取文件名
  FileName := TPath.GetFileName(FilePath);
  // 获取文件Uri
  ContentResolver := TAndroidHelper.ContentResolver;
  ContentValues := TJContentValues.Create;
  ContentValues.put_String(TJMediaStore_TempFiles.JavaClass.DISPLAY_NAME, JStringToString(FileName));
  ContentValues.put_String(TJMediaStore_TempFiles.JavaClass.IS_PENDING, '1');
  Uri := ContentResolver.insert(TJMediaStore_TempFiles.JavaClass.EXTERNAL_CONTENT_URI, ContentValues);
  // 写入文件内容
  with TStreamWriter.Create(ContentResolver.openOutputStream(Uri)) do
  try
    Write(TFile.ReadAllBytes(FilePath));
  finally
    Free;
  end;
  // 创建分享意图
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setType('application/*');
  ClipData := TJClipData.Create(TJClipData.JavaClass.newPlainText('File', JStringToString(FileName)), TJClipData.JavaClass.newUri(ContentResolver, 'temp', Uri));
  Intent.setClipData(ClipData);
  Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
  // 启动分享
  TAndroidHelper.Activity.startActivity(Intent);
end;

调用示例:

ShareFile('/storage/emulated/0/Download/test.txt');

注意:此代码需要申请WRITE_EXTERNAL_STORAGE权限

delphi如何写andriod10的文件分享代码

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

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