gpt4 book ai didi

java - Gmail 不会发送从应用程序推送的电子邮件附件

转载 作者:行者123 更新时间:2023-12-01 11:14:27 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我创建了一个 PDF,我希望用户能够通过电子邮件客户端从我的应用程序发送该 PDF。现在电子邮件客户端将显示 PDF 已附加,但无法发送附件。这是权限问题还是什么问题?有什么建议吗?

编辑通过添加getExternalCacheDir()存储到外部,问题仍然存在

电子邮件功能

private void EmailDialog(){
//create a dialog that prompts the user whether or not they want to send the PDF
dialogBuilder = new AlertDialog.Builder(this);
final TextView txtInput = new TextView(this);

dialogBuilder.setTitle("Email Audit");
dialogBuilder.setMessage("Do you want to email this audit?");
dialogBuilder.setView(txtInput);
dialogBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
//allows user to send PDF over their email application choice
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
PDF = new File(getExternalCacheDir() + PDFname);
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(PDF));
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(OldLocation.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
}
});
dialogBuilder.setNegativeButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
RemoveDialog();
}
});

AlertDialog emailDialog = dialogBuilder.create();
emailDialog.show();
}

PDF功能

@TargetApi(Build.VERSION_CODES.KITKAT)
private void createPDF(){


// open a new document
PrintAttributes pa = new PrintAttributes.Builder().setMediaSize(PrintAttributes.MediaSize.NA_LETTER).setMinMargins(PrintAttributes.Margins.NO_MARGINS).build();
PrintedPdfDocument document = new PrintedPdfDocument(this, pa);

// start a page
PdfDocument.Page page = document.startPage(0);

// draw something on the page
View content = textView;
content.draw(page.getCanvas());



// finish the page
document.finishPage(page);

// add more pages

// write the document content

try {
File PDFs = getExternalCacheDir();
File file = new File(PDFs, companyInfo.getName() + ".pdf");
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
document.writeTo(fos);
fos.close();

//close the document
document.close();
} catch (Exception ex){

}

realm.beginTransaction();
companyInfo = realm.where(CompanyInfo.class).findFirst();
companyInfo.removeFromRealm();
realm.commitTransaction();
}

最佳答案

Is this a permissions problem or something?

是的。除了您的应用程序之外,地球表面上恰好有零个应用程序可以访问您的文件,就像 internal storage 上一样。 ,对您的应用程序私有(private)。

此外,切勿对路径进行硬编码。您的 /data/data/ 内容在用户使用辅助帐户的每台 Android 4.2+ 设备上都会失败。

Any suggestions?

您可以坚持使用内部存储,但您需要使用 a FileProvider ,也许与 my LegacyCompatCursorWrapper ,提供文件。 This sample app演示了这一点,尽管使用的是 ACTION_VIEW 而不是 ACTION_SEND

或者,将文件放在external storage上.

关于java - Gmail 不会发送从应用程序推送的电子邮件附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994828/

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