gpt4 book ai didi

java - 将 PDF 附加到来自 Android 应用程序的电子邮件 - 文件大小为零

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:56 24 4
gpt4 key购买 nike

我正在尝试将名为 download.pdf 的 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

编辑

想知道这是否是 galaxy 选项卡上的错误?如果我通过 pdf 查看器(从我的应用程序)打开文件,然后尝试附加到 gmail 电子邮件,大小再次为 0。任何人都可以验证吗?

谢谢。

最佳答案

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:"));

关于java - 将 PDF 附加到来自 Android 应用程序的电子邮件 - 文件大小为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10686209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com