Прикрепление PDF-файла к электронному письму из приложения для Android — размер файла равен нулю

Я пытаюсь прикрепить PDF-файл с именем download.pdf к электронному письму в своем приложении для Android. Сначала я копирую файл на SDCard, а затем прикрепляю его к электронному письму.

Не знаю, если это уместно, но я тестирую на планшете Galaxy Tab. Путь к внешнему хранилищу возвращает mnt/sdcard/

Мой код выглядит следующим образом:

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

Проблема в том, что прикрепленный файл имеет размер 0 байт. Может ли кто-нибудь заметить, что может быть не так?

РЕДАКТИРОВАТЬ

Я вижу, что файл был сохранен на устройстве, если я смотрю в настройках, поэтому это должно быть проблемой, связанной с тем, как я прикрепляю файл к электронному письму. В журнале ошибок я вижу:

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

РЕДАКТИРОВАТЬ

Интересно, это ошибка на вкладке галактики? Если я открою файл через средство просмотра PDF (из своего приложения), а затем попытаюсь прикрепить его к электронному письму Gmail, размер снова будет равен 0. Кто-нибудь может проверить?

Спасибо.

6
задан Praveenkumar 22 May 2012 в 10:13
поделиться