Android Fragments Android -共享文件而不保存在外部存储器上

amrnrhlw  于 2023-03-12  发布在  Android
关注(0)|答案(1)|浏览(146)

我想通过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()
    }
}

但它不工作。它打开了我选择的应用程序,但文件不在那里。你知道可能是什么问题吗?

w8ntj3qf

w8ntj3qf1#

另一个应用程序没有访问该内容的权限。您也可能已经采取了一些步骤来阻止FileUriExposedException,因为您正在使用的技术(toUri() on File)几乎已经被禁止了七年。
请使用FileProvidergetUriForFile()共享您的内容,而不要尝试在File上使用toUri()FileProvider包含在:

......还有其他资源。

相关问题