Ответ 1
Я столкнулся с подобной проблемой. Комментарий CommonsWare выше разрешил.!
Создайте объект File и создайте Uri, используя метод Uri.fromFile().
File file = new File(filePath);
Uri uri = Uri.fromFile(file);
Мое приложение создает PDF файл с использованием библиотеки iText (шаблон PDF с заполненными формами), и я хочу приложить его к отправляемому электронному письму. Когда я пытаюсь прикрепить файл, я получаю сообщение об ошибке. Can't attach empty file
удается Can't attach empty file
в приложении Gmail. Также попробовали использовать приложение электронной почты HTC и приложение электронной почты Touchdown - оба из которых просто ничего не придают и не дают ошибок.
Создание PDF:
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields form = stamper.getAcroFields();
// Fill all PDF forms here (theres quite a few)
stamper.setFormFlattening(true);
stamper.close();
reader.close();
}
Попытка прикрепить файл и отправить электронное письмо:
public void sendMail(){
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent .setType("*/*");
emailIntent .putExtra(Intent.EXTRA_EMAIL, "[email protected]");
emailIntent .putExtra(Intent.EXTRA_STREAM, Uri.parse(dest));
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(emailIntent, "Send email..."));
}
Где dest
- путь и имя файла данного файла. Я знаю, что путь и имя файла в dest
- это нормально, так как это var, используемый для сохранения файла (который я могу просматривать как на устройстве, так и на ПК).
Gmail logcat:
06-26 00:24:48.901 14476-14476/? E/Gmail﹕ Error adding attachment
com.android.mail.utils.b: Cannot attach empty attachment
at com.android.mail.ui.ComposeAttachmentTileGrid.a(SourceFile:62)
at com.android.mail.compose.c.b(SourceFile:1933)
at com.android.mail.compose.c.c(SourceFile:2063)
at com.android.mail.compose.c.a(SourceFile:7992)
at com.android.mail.compose.c.q(SourceFile:759)
at com.android.mail.compose.c.onCreate(SourceFile:4830)
at com.google.android.gm.ComposeActivityGmail.onCreate(SourceFile:194)
at android.app.Activity.performCreate(Activity.java:5958)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5696)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Я столкнулся с подобной проблемой. Комментарий CommonsWare выше разрешил.!
Создайте объект File и создайте Uri, используя метод Uri.fromFile().
File file = new File(filePath);
Uri uri = Uri.fromFile(file);
Я столкнулся с той же проблемой на Nexus 5 с Android 6 (тот же код работал на моем Nexus 6 с Android 6), нашел объяснение и рабочее решение здесь: fooobar.com/info/195860/...