Ver Mensaje Individual
  #2  
Viejo 20/10/13, 22:16:16
Array

[xs_avatar]
Novagecko Novagecko no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2013
Mensajes: 2
Tu operador: Movistar

Hola Kaiser,

Efectivamente necesitas guardar el archivo que deseas compartir en la SD, ten en cuenta que no vale con guardarlo en el almacenamiento reservado para la aplicación porque este espacio no está disponible para el resto de aplicaciones y, por ejemplo, WhatsApp, no podría leerlo.

Es aconsejable que para que para este tipo de tareas uses el directorio cache externo cuya ruta puedes conseguir llamando a context.getExternalCacheDir().

El archivo que se genera lo debes borrar, pero no instantáneamente despues de compartirlo, ya que la aplicación con que se comparta (p.e. WhatsApp) lo necesitará más adelante, por ejemplo para enviarlo a través de Internet. Por ello lo mejor es que de vez en cuando revises la carpeta de cache y borres aquellos archivos que haga tiempo que se crearon.

En cuanto a la copia desde los recursos de la aplicación este código debería funcionarte:

Código:
    File salida=new File(getExternalCacheDir().getAbsolutePath(),"sonido1.mp3");
    InputStream in = getResources().openRawResource(R.raw.sonido1);
    FileOutputStream out = new FileOutputStream(salida);
    byte[] buff = new byte[1024];
    int read = 0;

    try {
       while ((read = in.read(buff)) > 0) {
          out.write(buff, 0, read);
       }
    } finally {
         in.close();
         out.close();
    }
Saludos

Última edición por Novagecko Día 20/10/13 a las 22:19:29.
Responder Con Cita