在我的应用程序中,我想存储Dropbox (以及其他内容提供商)提供的内容的持久读取权限。Android应用程序不支持存储访问框架( Storage ),因此为了能够选择不能使用ACTION_OPEN_DOCUMENT的内容,我需要使用ACTION_GET_CONTENT。
但是,某些内容提供程序(如驱动器)似乎不返回通过ACTION_GET_CONTENT返回的URI的持久权限。我相信这和预期的一样,因为GET_CONTENT URI不应该是持久的。不幸的是,我确实需要在重新启动的过程中坚持引用。
如果内容提供者不支持SAF,那么似乎无法在最近的API版本中获得对URI的持久权限。这是真的吗?什么是好的解决办法?
不好的(对于我的用例)解决方法是:复制内容并在本地存储,依赖于规范中没有的实现细节(例如,GET_CONTENT返回的Dropbox实际上是可持续的),或者不保存权限。
发布于 2017-05-10 11:23:59
如果内容提供者不支持SAF,那么似乎无法在最近的API版本中获得对URI的持久权限。这是真的吗?
基于我的实验是的。更准确地说,根据框架提供的内容,只有从Uri中获得的DocumentsProvider值才有可能具有持久的权限。我看不出普通的ContentProvider怎么能提供这种服务。
什么是好的解决办法?
考虑到您的“坏”解决方案列表,您最好的解决方法是使用一些特定于Dropbox的API来允许用户选择内容,如果Dropbox提供的话,您可以在一段时间内访问它。
在“坏”的解决方案中,复制内容是一种可能的选择--调整您的UI,告诉用户您正在“导入”内容,以帮助表明它确实是一个副本。
https://stackoverflow.com/questions/43889722
复制相似问题