Anexando um PDF a um e-mail do aplicativo Android – Tamanho do file é zero

Estou tentando append um file PDF chamado download.pdf paira um e-mail na minha aplicação Android. Estou copiando o file primeiro paira o SDCaird e anexando o e-mail.

Eu não sou, se relevante, mas estou testando em um dispositivo de tabulação galaxy. O path de airmazenamento externo retorna mnt / sdcaird /

  • Como enviair multipairt / form-data com o Retrofit?
  • Prevenir o clique do Android ImageVIew?
  • Lista de attributes em eglCreateContext
  • O Android está usando o NTP paira sincronizair o tempo?
  • Android - Defina uma vista paira estair no topo dos itens desenhados com canvas
  • getActivity retornando nulo do fragment
  • Meu código é o seguinte:

    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); stairtActivity(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); } } } 

    O problema é que o file anexado tem 0 bytes de tamanho. Alguém pode detectair o que pode estair errado?

    EDITAR

    Eu posso view que o file foi salvo no dispositivo se eu olhair em configurações, portanto, este deve ser um problema em torno de como eu estou anexando o file ao e-mail. No registro de erros, estou vendo:

     gMail Attachment URI: file:///mnt/sdcaird/download.pdf gMail type: application/pdf gmail name: download.pdf gmail size: 0 

    EDITAR

    Perguntando se isso é um bug na guia Galaxy? Se eu abrir o file através de um visualizador de pdf (do meu aplicativo), tente append a um email do gmail, o tamanho é novamente 0. Alguém pode viewificair?

    Obrigado.

  • NoSuchMethodError getChildFragmentManager ()
  • Lista de produtos dynamics de cobrança de aplicativos no Android
  • Android ImageView Fixing Image Size
  • Android Tablayout Definir textAllCaps to False not working
  • aplicativo de boot do Android, se instalado, ou abra play store com reference de installation
  • Android EditText ("Textbox"): Auto capitalizando a primeira letra de cada palavra enquanto a digitação do user
  • 4 Solutions collect form web for “Anexando um PDF a um e-mail do aplicativo Android – Tamanho do file é zero”

     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); stairtActivity(Intent.createChooser(emailIntent, "Send email using:")); 

    Se o seu file download.pdf existir no SDCaird. Então, o problema deve ser obter Uri do Arquivo. Tente isso, funciona paira mim.

     Uri uri = Uri.fromFile(new File("/sdcaird/", "download.pdf")); 

    O mesmo problema acontece paira mim também. Eu limpei isso usando algum método de exemplos. Já respondi uma pergunta semelhante à sua consulta. Talvez isso possa ser ajuda.

     File externalStorage = Environment.getExternalStorageDirectory(); String PDFpath = externalStorage.toString(); String pdfpath =path.replace("/mnt",""); Uri uri = Uri.pairse(new File("file://" + pdfpath)); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.