Cómo adjuntar un PDF a un correo electrónico de la aplicación Android – El tamaño del archivo es cero
Estoy intentando adjuntar un archivo PDF llamado download.pdf a un correo electrónico en mi aplicación para Android. Estoy copiando el archivo primero a la tarjeta SD y luego adjuntar el correo electrónico.
No estoy si es relevante, pero estoy probando en un dispositivo de pestañas galácticas. La ruta de almacenamiento externa devuelve mnt / sdcard /
- ¿Cómo crear un archivo PDF utilizando iText o alguna otra biblioteca en android?
- Construir PDFium en Android
- Abrir archivo PDF de Android
- API o bibliotecas para la vista de pdf desde url en Android
- Lectura de PDF desde la carpeta de activos usando PDFViewer.jar
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 0 bytes de tamaño. ¿Puede alguien detectar lo que podría estar mal?
EDITAR
Puedo ver que el archivo se ha guardado en el dispositivo si miro en ajustes, por lo tanto esto debe ser un problema alrededor de cómo estoy atando el archivo al email. En el registro de errores veo:
gMail Attachment URI: file:///mnt/sdcard/download.pdf gMail type: application/pdf gmail name: download.pdf gmail size: 0
EDITAR
¿Se pregunta si esto es un error en la pestaña galaxia? Si abro el archivo a través de un visor de pdf (desde mi aplicación), a continuación, intenta adjuntar a un correo electrónico de gmail, el tamaño es de nuevo 0. ¿Puede alguien verificar?
Gracias.
- PrintedPdfDocument siempre da como resultado PDF dañado
- Android SDK y Guía del desarrollador sin conexión o PDF
- Creación de un archivo pdf en android mediante programación y escritura en él
- Visualización de un archivo PDF en Android
- Necesito mostrar un PDF en el que el texto de pdf se ajustará automáticamente al ancho de la pantalla y el texto restante se moverá a la siguiente línea
- Leer archivo PDF en línea usando MuPDF
- Abrir PDF en un WebView
- Generar miniatura de PDF en Android
String[] mailto = {""}; Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/CALC/REPORTS/",pdfname )); Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.putExtra(Intent.EXTRA_EMAIL, mailto); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Calc PDF Report"); emailIntent.putExtra(Intent.EXTRA_TEXT, ViewAllAccountFragment.selectac+" PDF Report"); emailIntent.setType("application/pdf"); emailIntent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(emailIntent, "Send email using:"));
Si su archivo download.pdf existe en SDCard. Así que el problema debe ser obtener Uri de archivo. Prueba esto, funciona para mí.
Uri uri = Uri.fromFile(new File("/sdcard/", "download.pdf"));
El mismo problema ocurre también para mí. He aclarado que utilizando algún método de los ejemplos. Ya he respondido a una pregunta similar a su consulta. Tal vez eso pueda ayudarte.
File externalStorage = Environment.getExternalStorageDirectory(); String PDFpath = externalStorage.toString(); String pdfpath =path.replace("/mnt",""); Uri uri = Uri.parse(new File("file://" + pdfpath));
- MGoogleApiClient no se puede lograr en otra actividad
- Enviar datos a través de wifi (no internet) cuando los datos móviles