首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:分享我的应用程序中的一个大文件(图像、文档等)而无需在缓存文件夹/临时文件中创建副本

Android:分享我的应用程序中的一个大文件(图像、文档等)而无需在缓存文件夹/临时文件中创建副本
EN

Stack Overflow用户
提问于 2021-06-11 10:44:50
回答 1查看 176关注 0票数 3

我正在尝试将我的应用程序(任何类型的文件)与手机中的另一个应用程序共享(例如,通过“共享”菜单),或者在手机的默认应用程序中预览它,但是我需要这样做,而不需要在临时文件夹或缓存文件夹中创建文件的副本,然后使用路径创建一个意图,就像通常所做的那样。

不同之处在于,我已经在手机中保存了文件,但它存储在一个自定义文件系统中(这是我们正在开发的应用程序,以及它对文件进行加密的其他功能,这就是为什么该文件不在电话中的常规文件夹中)。我可以轻松地获得文件的字节、创建读取器等;但到目前为止,我只找到了通常的方法来完成我所需要的工作:创建一个临时文件,将字节写到它,然后用该文件的路径创建一个意图,等等。

我是不是遗漏了什么?

是否有一种方法来传递,而不是文件的路径,其他类型的抽象,告诉另一个应用程序或Android,用它来获取文件(字节?)从读者那里还是其他类似的地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 11:00:32

我可以轻松地获得文件的字节、创建读取器等;但到目前为止,我只找到了通常的方法来完成我所需要的工作:创建一个临时文件,将字节写到它,然后用该文件的路径创建一个意图,等等。

如果您所说的“创建此文件路径的意图”意味着类似于使用Uri.fromFile(),那么这已经有几年没有起作用了。

是否有一种方法来传递,而不是文件的路径,其他类型的抽象,告诉另一个应用程序或Android,用它来获取文件(字节?)从读者那里还是其他类似的地方?

Uri不是文件。您通过EXTRA_STREAMACTION_SEND Intent上提供的ACTION_SEND不必指向文件。事实上,它不应该直接指向文件。

它应该指向ContentProvider

现在,用于ACTION_SEND的一个常见的ACTION_SEND实现是FileProvider,它是一个知道如何在文件系统上流文件内容的ContentProvider。但是,您不必使用它--您可以创建您自己的ContentProvider,它可以从其他来源流内容。

你可以免费下载我的一本旧版本的书。。它有很多关于ContentProvider的资料,包括关于如何实现定制提供者的两个章节的大约50页。您将更多地使用流样式API而不是数据库样式API。即使如此,示例可能是最接近你所要做的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67935612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档