0

我几乎找到了许多类似的链接 - 没有任何帮助

  1. Gmail 不允许我从 /storage/emulated/0/Android/data/myapppackage/cache/..pdf 手动使用 Gmail 和以编程方式获取文件
  2. 如果将相同的文件下载到 /storage/emulated/0/download/..pdf,则可以附加

代码 -

protected void sendEmail(Context ctx, String filePath){
    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Uri uri = Uri.fromfile(new File(filePath)));
    emailIntent.setType("application/pdf");
    emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "PDF"));
    ctx.startActivity(emailIntent);
}

file_provder.xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <cache-path name="cache" path="/" />
    <files-path name="files" path="/" />
</paths>

尝试了以下链接,这几乎看起来很完美,但对我不起作用 -通过 FileProvider 将缓存文件附加到 GMail 并且 Intent 不起作用

4

1 回答 1

0

这可能对将来的某个人有所帮助,而不是直接从文件路径获取 uri,我只是使用文件提供程序来获取返回 content://path 的 uri

protected void sendEmail(Context ctx, String filePath){
    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Uri uri = FileProvider.getUriForFile(ctx, ctx.getPackageName, (new File(filepath)));
    emailIntent.setType("application/pdf");
    emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "PDF"));
    ctx.startActivity(emailIntent);
}
于 2021-10-18T11:13:54.380 回答