Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Share Audio MP3 (https://www.clubdelphi.com/foros/showthread.php?t=89989)

wolfran_hack 15-03-2016 05:30:26

Share Audio MP3
 
Básicamente tenemos un MP3 y queremos compartirlo en otra aplicación:

En Java es:

Código:

//en android
    //String sharePath = Environment.getExternalStorageDirectory().getPath() + "/Soundboard/Ringtones/custom_ringtone.ogg";
    //Uri uri = Uri.parse(sharePath);
    //Intent share = new Intent(Intent.ACTION_SEND);
    //share.setType("audio/*");
    //share.putExtra(Intent.EXTRA_STREAM, uri);
    //startActivity(Intent.createChooser(share, "Share Sound File"));

En Delphi:

Código Delphi [-]
con42 := TPath.GetDocumentsPath + PathDelim + 'archivo.mp3';

  Intent := TJIntent.Create;
  //Intent.setData(StrToJURI(con42));
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setType(StringToJString('audio/*'));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,StringToJString(con42));
  MainActivity.startActivity(Intent);

Me deja compartir pero al seleccionar da error: "Fallo a compartir, intentelo nuevamente.."

Probe con:

Código Delphi [-]
intent.setType("audio/mpeg");

Código Delphi [-]
intent.setType("audio/mpeg3");

y tampoco funciona.

Ideas?

wolfran_hack 16-03-2016 22:52:15

Código Delphi [-]
  Intent := TJIntent.Create;
  con42 := 'file://' + TPath.GetDocumentsPath + PathDelim + 'Negr.mp3';
  Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  Intent.setPackage(StringToJString('com.whatsapp'));
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setData(Uri);
  Intent.setDataAndType(Uri,StringToJString('audio/mpeg3'));
  Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
  Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,StringToJString(con42)); //<  MainActivity.startActivity(Intent);

De momento todo el código que pude pasar, la custion ahora seria sacar el archivo y moverlo a una carpeta para poderlo enviar.

wolfran_hack 17-03-2016 20:12:46

Ya casi esta, solo que tiene un error:

Código Delphi [-]
//Copia el Archivo a Directorio Temp.
TFile.Copy(TPath.GetDocumentsPath + PathDelim + 'archivo.mp3', TPath.GetTempPath + PathDelim + 'archivo.mp3');

//Tomamos el Archivo de Temp.
con42 := TPath.GetTempPath + PathDelim + 'archivo.mp3';

an_intent := TJIntent.Create;
an_intent.setAction (TJIntent.JavaClass.ACTION_SEND);
an_intent.setType (StringToJString('audio/mpeg3'));
fileuri := JParcelable (TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init (StringToJString (con42))));
an_intent.putExtra (TJIntent.JavaClass.EXTRA_STREAM, fileuri);
SharedActivity.startActivity (TJIntent.JavaClass.createChooser(an_intent, StrToJCharSequence ('Share With')));

Funciona la primera vez, despues dice un error de "The Specified file already exists."


La franja horaria es GMT +2. Ahora son las 07:27:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi