delphi如何写andriod10的文件分享代码
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权限
原文地址: https://www.cveoy.top/t/topic/fcwL 著作权归作者所有。请勿转载和采集!