我不希望我的应用需要任何权限,但我希望用户能够选择要阅读的文件。我的应用程序不需要任意访问文件系统。但是,到目前为止我研究过的所有openfiledialog实现似乎都有权访问外部存储。
我能想到的一个解决方法是将我的应用配置为打开某种类型文件的应用列表。我没试过这个,但我希望这可以在未经许可的情况下访问外部存储。但是,在这种情况下,用户指导将不那么理想。我更喜欢带有对话框的解决方案,让用户选择文件。
我认为此要求不会破坏安全性,因为用户可以完全控制我的应用可以读取的文件。这有可能吗?
答案 0 :(得分:4)
但是,到目前为止我研究过的所有openfiledialog实现似乎都有权访问外部存储。
将minSdkVersion
设置为19,然后使用ACTION_OPEN_DOCUMENT
,the Storage Access Framework的一部分。
或者,如果您需要minSdKVersion
低于19,use ACTION_GET_CONTENT
旧设备。
您将通过Uri
返回onActivityResult()
。使用ContentResolver
和openInputStream()
至consume the content identified by that Uri
等方法。
我还没试过这个,但我希望这可以在未经许可的情况下使用外部存储空间
仅当您排除file:
Uri
值时。例如,只支持<intent-filter>
content:
值的Uri
可以使用。