背景资料
在 安卓4.4(KitKat)上,谷歌对 SD 卡的访问进行了相当严格的限制。
从 Android Lollipop (5.0)开始,开发人员可以使用一个新的 API,要求用户确认允许访问特定的文件夹,就像在 < strong > this Google-Groups post 上写的那样。
问题是
这篇文章指导你访问两个网站:
这看起来像是一个内部示例(可能稍后会在 API 演示中显示) ,但是很难理解发生了什么。
这是关于新 API 的官方文档,但是它没有提供关于如何使用它的足够详细信息。
Here's what it tells you:
如果您确实需要完全访问整个文档子树,
首先启动 ACTION _ OPEN _ DOCUMENT _ TREE,让用户选择一个
然后将生成的 getData ()传递到 from TreeUri (Context,
Uri)开始处理用户选择的树。
在导航 DocumentFile 实例树时,始终可以使用
GetUri ()获取表示基础文档的 Uri
该对象,用于 openInputStream (Uri)等。
要简化运行 KITKAT 或更早版本的设备上的代码,可以
使用 from File (File)模拟 DocumentsProvider 的行为。
The questions
我有几个关于新 API 的问题:
- 你到底是怎么使用它的?
- 根据这篇文章,操作系统会记得应用程序被授予了访问文件/文件夹的权限。如何检查是否可以访问文件/文件夹?是否有一个函数可以返回我可以访问的文件/文件夹列表?
- 你如何在 Kitkat 上处理这个问题? 它是支持库的一部分吗?
- 操作系统上是否有设置屏幕显示哪些应用程序可以访问哪些文件/文件夹?
- 如果一个应用程序在同一个设备上为多个用户安装,会发生什么情况?
- 有关于这个新 API 的其他文档/教程吗?
- 可以撤销权限吗? 如果可以,是否有一个意图正在发送到应用程序?
- 请求权限是否会在选定的文件夹上递归工作?
- Would using the permission also allow to give the user a chance of multiple selection by user's choice? Or does the app need to specifically tell the intent which files/folders to allow?
- Is there a way on the emulator to try the new API ? I mean, it has SD-card partition, but it works as the primary external storage, so all access to it is already given (using a simple permission).
- 当用户用另一张 SD 卡替换 SD 卡时会发生什么?