Con el siguiente codigo vamos a poder compartir archivos directo a WhatsApp bajo Delphi X Seattle: 1.- Los uses:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Media, {$IFDEF ANDROID} FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, idUri,Androidapi.IOUtils, Androidapi.JNI.Telephony, Androidapi.Helpers, {$ENDIF ANDROID} {$IFDEF Android} Androidapi.JNI.Os, Androidapi.JNI.Webkit, {$ENDIF} FMX.StdCtrls, FMX.Platform.Android, FMX.Objects, System.Actions, FMX.ActnList, FMX.StdActns, FMX.MediaLibrary.Actions, FMX.Controls.Presentation; |
1 2 3 4 5 6 |
implementation {$R *.fmx} uses System.iOUtils; |
2.- Ejemplo de Boton para Compartir / Share:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
procedure TForm1.SpeedButton1Click(Sender: TObject); var an_intent: JIntent; file42: String; Uri: Jnet_Uri; fileuri: JParcelable; begin // Si el archivo existe lo eliminamos para no tener errores. if FileExists(TPath.GetTempPath + PathDelim + 'archivo.mp3') then begin TFile.Delete(TPath.GetTempPath + PathDelim + 'archivo.mp3') end else begin //nada.. end; //Copia el Archivo a Directorio Temp. Si no se copia no se puede enviar. TFile.Copy(TPath.GetDocumentsPath + PathDelim + 'archivo.mp3', TPath.GetTempPath + PathDelim + 'archivo.mp3'); //Tomamos el Archivo de Temp. file42 := TPath.GetTempPath + PathDelim + 'archivo.mp3'; an_intent := TJIntent.Create; an_intent.setAction (TJIntent.JavaClass.ACTION_SEND); an_intent.setType (StringToJString('audio/mpeg3')); // Verificar el Tipo de Archivo. fileuri := JParcelable (TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init (StringToJString (file)))); an_intent.putExtra (TJIntent.JavaClass.EXTRA_STREAM, fileuri); //EXTRA_STREAM cambia segun el tipo de archivo. SharedActivity.startActivity (TJIntent.JavaClass.createChooser(an_intent, StrToJCharSequence ('Share With'))); end; |
3.- Bonus: Si queremos que solo se comparta en WhatsApp, debemos fijar el Paquete:
1 |
an_intent.setPackage(StringToJString('com.whatsapp')); |