我想知道将信息从应用程序传递到Android中相同设备上的另一个应用程序的最佳方法。
例如:
令人困惑的部分
阅读一些文章后:
https://commonsware.com/blog/2016/03/14/psa-file-scheme-ban-n-developer-preview.html
https://commonsware.com/blog/2014/07/04/uri-not-necessarily-file.html
https://commonsware.com/blog/2016/03/15/how-consume-content-uri.html
看起来,理想情况下,你永远不应该假设你可以提取文件路径,谷歌已经做了一些更新,这使得这不可能。
解决方法:
问题:
这种解决方法似乎并不理想,因为从技术上讲,你是这样 将文件再次保存在设备上。有两个位置 相同的内容(谷歌应用程序存储和应用程序A的存储)。你也是 必须管理何时删除您创建的App A的文件。 这看起来并不理想,并且想知道什么是最好的 方法会是什么?或者这是预期的流量?
我也不知道 如果将字节备份传递给文件路径是理想的。
更具体地说,我正在创建的应用程序是混合,我使用cordova插件与Web应用程序进行交互。 Web应用程序具有基于文件路径处理或显示共享文档的方法。理想情况下,我希望保持一致,只需读取文件路径,以便Web应用程序支持的其他平台不会中断。
任何建议表示赞赏, d
答案 0 :(得分:2)
尽管我无法从contentUri中提取文件路径,但我能够读取contentUri指向的字节。
正确。这与使用HTTPS URL的方式没有显着差异,在这种情况下,您也没有对内容的直接文件系统访问权限(在这种情况下,驻留在不同的服务器上)。
所以我可以将它保存到与App A的本地缓存相关的文件中,并传递该路径以获取渲染或传回字节。
或者,只消耗字节。再次,类似于HTTPS URL,不需要将这些字节保存到磁盘以使用它们。
解决方法看起来并不理想,因为从技术上讲,您将再次在设备上保存文件。有两个位置具有相同的内容(谷歌应用程序存储和应用程序A的存储)。您还必须管理何时删除您创建的应用程序文件。
然后不要再次在设备上保存文件,只需使用字节流。同样,这与使用HTTPS URL没有显着差异。
这看起来并不理想,并且想知道最好的方法是什么?
不要将字节写入磁盘。只需使用它们。
理想情况下,我希望保持一致,只需阅读文件路径,以便Web应用程序支持的其他平台不会中断。
您的选择是:
改进Web应用程序代码,使本地文件路径一个可能的数据源,或
遇到复制该数据的问题
毕竟,请注意,通过Uri
提供的ACTION_SEND
不一定是content
Uri
。它很容易成为http
或https
Uri
。