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

问题描述

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

        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,因此看起来正确。选择电子邮件时,我会填写电子邮件的主题,但没有附件。

解决方法

替换:

intent.data = fileURI

具有:

intent.putExtra(Intent.EXTRA_STREAM,fileURI)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...