Estoy tratando de adjuntar un archivo PDF llamado download.pdf a un correo electrónico en mi aplicación de Android. Copio el archivo primero a la tarjeta SD y luego adjunto el correo electrónico.Adjuntar un PDF a un correo electrónico desde la aplicación de Android - El tamaño del archivo es cero
No estoy si es relevante, pero estoy probando en un dispositivo de tabulación de galaxias. La ruta de almacenamiento externo devuelve mnt/sdcard/
Mi código es el siguiente:
public void sendemail() throws IOException {
CopyAssets();
String emailAddress[] = {""};
File externalStorage = Environment.getExternalStorageDirectory();
Uri uri = Uri.fromFile(new File(externalStorage.getAbsolutePath() + "/" + "download.pdf"));
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, emailAddress);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Text");
emailIntent.setType("application/pdf");
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailIntent, "Send email using:"));
}
public void CopyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
if (filename.equals("download.pdf")) {
try {
System.out.println("Filename is " + filename);
in = assetManager.open(filename);
File externalStorage = Environment.getExternalStorageDirectory();
out = new FileOutputStream(externalStorage.getAbsolutePath() + "/" + filename);
System.out.println("Loacation is" + out);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
}
El problema es que el archivo que se adjunta es de 0 bytes de tamaño. ¿Alguien puede detectar lo que podría estar mal?
EDITAR
puedo ver que el archivo se ha guardado en el dispositivo si miro en la configuración, por lo que este debe ser un problema en torno a cómo os adjunto el archivo al correo electrónico. En el registro de errores que estoy viendo:
gMail Attachment URI: file:///mnt/sdcard/download.pdf
gMail type: application/pdf
gmail name: download.pdf
gmail size: 0
EDITAR
Se pregunta si se trata de un error en la ficha Galaxy? Si abro el archivo a través de un visor de PDF (desde mi aplicación) y luego intento adjuntarlo a un correo electrónico de Gmail, el tamaño vuelve a ser 0. ¿Alguien puede verificarlo?
Gracias.
¿Su aplicación tiene permiso para acceder a la tarjeta SD? –
Sí - en manifiesto - –
GuybrushThreepwood
¿Revisaste el tamaño del archivo pdf en tu 'sdcard' que fuiste copiado usando el método' copyAssets() '. – Praveenkumar