Desconozco si solo me ocurrió a mí pero el usar TActionList en mi caso no funcionó para llevar a cabo la funcionalidad al usar Delphi 10.4.2 Sydney.
Sin embargo, puedes hacerlo de esta manera tanto en Sydney como en Alexandria.
Antes que nada debes marcar el checkbox de la opción
Secure File Sharing en las opciones de tu proyecto.
Y el método quedaría de esta manera.
Código Delphi
[-]
uses
{$IFDEF ANDROID}
Androidapi.JNI.Provider,Androidapi.Jni.Support,Androidapi.StorageManager,
Androidapi.jni,fmx.helpers.android, Androidapi.Jni.app,
Androidapi.Jni.GraphicsContentViewText, Androidapi.JniBridge,
FMX.ScrollBox, FMX.Memo,Androidapi.JNI.Os, Androidapi.Jni.Telephony,
Androidapi.JNI.JavaTypes,idUri,Androidapi.JNI.NET, Androidapi.Helpers,
Androidapi.JNI.Widget, Grijjy.TextToSpeech, FMX.Media, FMX.Advertising;
{$ENDIF}
procedure CompartirCon;
var
Intent:JIntent;
Uri:JNet_Uri;
arch:JFile;
Uris:JArrayList;
FilePath: string;
FileName: string;
Toast: JToast;
begin
FilePath:= TPath.GetDocumentsPath + PathDelim;
FileName:= FilePath + 'Archivo.txt';
if tfile.Exists(FileName) then
begin
Uris:=TJArrayList.JavaClass.init;
arch:=TJFile.JavaClass.init(StringToJString(FileName));
arch.setReadable(true,false);
Uri:= TAndroidHelper.JFileToJURI(arch);
Uris.add(Uri);
Intent:=TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND_MULTIPLE);
Intent.setType(StringToJString('text/plain'));
TAndroidHelper.Activity.startActivity(Intent);
TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Compartir con...')));
finally
Uris.clear;
end;
end else
begin
Toast:= TJToast.JavaClass.makeText(TAndroidHelper.Context,
StrToJCharSequence('No existe el archivo especificado.'), TJToast.JavaClass.LENGTH_SHORT);
Toast.setGravity(TJGravity.JavaClass.CENTER, 0 , 0);
Toast.show;
end;
end;