Tema: Compartir en
Ver Mensaje Individual
  #3  
Antiguo 13-10-2023
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 57
Reputación: 6
dani36652 Va camino a la fama
Post

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
  //Ejemplo
  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')); (*Es el homólogo a MimeType y es opcional;
    documentación: https://developer.android.com/refere...mon/MimeTypes*)
    Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
    Intent.putParcelableArrayListExtra(TJIntent.JavaClass.EXTRA_STREAM, Uris);
    try
      (* Puedes usar únicamente una de estas dos *)
      TAndroidHelper.Activity.startActivity(Intent); //Esta forma

      TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(Intent, //ó esta otra
      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;

Última edición por dani36652 fecha: 13-10-2023 a las 21:53:29.
Responder Con Cita