delphi如何写andriod12的分享文件给其他APP的代码必须能通过编译
以下是Delphi中分享文件给其他APP的代码示例:
uses
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
Androidapi.Helpers,
FMX.Helpers.Android,
System.IOUtils;
procedure ShareFile(const AFileName: string);
var
Intent: JIntent;
Uri: Jnet_Uri;
Stream: JFileInputStream;
begin
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
Intent.setType(StringToJString('text/plain'));
Uri := TJFileProvider.JavaClass.getUriForFile(
SharedActivityContext,
StringToJString('com.example.myapp.fileprovider'),
TJFile.JavaClass.init(StringToJString(AFileName)));
Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID));
Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
SharedActivity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Share File')));
end;
// 使用示例
procedure TForm1.Button1Click(Sender: TObject);
begin
ShareFile(TPath.Combine(TPath.GetDocumentsPath, 'example.txt'));
end;
在上述代码中,我们使用了Android原生的Intent来实现文件分享功能。我们首先创建一个Intent对象,并设置其ACTION_SEND和type属性,表示我们要分享的是一个文件,并且文件类型为text/plain。
接着,我们使用TJFileProvider类来创建一个content类型的Uri对象,这个对象可以用来代表我们要分享的文件。其中,com.example.myapp.fileprovider是我们自定义的FileProvider授权文件访问的Authority字符串,需要在AndroidManifest.xml文件中声明。而AFileName则是我们要分享的文件路径。
接下来,我们将这个Uri对象作为一个Parcelable对象,放入Intent的EXTRA_STREAM属性中。最后,我们使用FLAG_GRANT_READ_URI_PERMISSION标志来授权其他应用可以读取我们分享的文件。
最后,我们调用startActivity方法来启动一个系统选择器,让用户选择要分享到的应用程序
原文地址: https://www.cveoy.top/t/topic/fcyU 著作权归作者所有。请勿转载和采集!