我想通过Intent共享文本内容,但有时字符串太大,所以我决定将其作为文件共享。我尝试不将此文件保存在外部存储上,这样我就不需要修改存储权限,所以我尝试在该高速缓存目录上创建并共享它。我在一个片段中,我尝试了以下操作:
private fun generateNoteOnSD(fileName: String, content: String) {
try {
val root = File(requireActivity().cacheDir.path)
val file = File(root, fileName)
val writer = FileWriter(file)
writer.append(content)
writer.flush()
writer.close()
val intent = Intent(Intent.ACTION_SEND)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_STREAM, file.toURI())
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
} catch (e: IOException) {
e.printStackTrace()
}
}
但它不工作。它打开了我选择的应用程序,但文件不在那里。你知道可能是什么问题吗?
1条答案
按热度按时间w8ntj3qf1#
另一个应用程序没有访问该内容的权限。您也可能已经采取了一些步骤来阻止
FileUriExposedException
,因为您正在使用的技术(toUri()
onFile
)几乎已经被禁止了七年。请使用
FileProvider
和getUriForFile()
共享您的内容,而不要尝试在File
上使用toUri()
。FileProvider
包含在:......还有其他资源。