使用 FileProvider 共享缓存文件而不附加文件

Sharing a cache file using FileProvider not attaching the file

我在缓存中有一个文件,我已经验证它确实存在(我可以读取它并打印出来)。在此特定实例中,它是一个 .csv 文件。我让选择器 UI 显示出来,但文件永远不会附加到电子邮件中。谁能发现我缺少的东西?我现在已经尝试了几种方法,但看不出有什么问题。

        val file = File(parentContext.cacheDir, fileName)
        Timber.i("Sharing file of size: ${file.length()}")
        val fileURI = FileProvider.getUriForFile(parentContext.applicationContext, parentContext.packageName + ".provider", file)
        Timber.i("The fileURI path is: ${fileURI.path}")
        val intent = Intent(Intent.ACTION_SEND)
        intent.putExtra(Intent.EXTRA_SUBJECT, "Share of $fileName")
        intent.type = URLConnection.guessContentTypeFromName(fileName)
        intent.data = fileURI
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        startActivity(parentContext, Intent.createChooser(intent, "Share File"), null)

Timber 行的输出是: 共享文件大小:1719 和 fileURI 路径是:/cache/myfilename-10-30-2020.csv 这样看起来是正确的。当我 select 发送电子邮件时,我得到了填写的电子邮件主题,但没有附件。

替换:

intent.data = fileURI

与:

intent.putExtra(Intent.EXTRA_STREAM, fileURI)