使用 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)
我在缓存中有一个文件,我已经验证它确实存在(我可以读取它并打印出来)。在此特定实例中,它是一个 .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)