我有一个应用程序,它实现了自己的选择文件界面,这是应用程序正常工作的要求。
在KitKat中,(外部)SD卡上的文件需要通过Storage Access Framework获得权限才能进行修改。
由于这些受限制的文件仍然可以自由阅读,因此它不会阻止我的应用程序显示它们。但是,一旦用户选择对其中一个文件执行操作,我可以使用存储访问框架向用户提示特定的权限请求吗?
以下是文档中的示例。这将返回一组所有可能的图像。显然我不想向用户显示所有图像,如果我已经可以识别我请求许可的特定图像。是否有其他过滤器可以缩小呈现给用户的内容?
(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
答案 0 :(得分:0)
ACTION_OPEN_DOCUMENT
可能需要FLAG_GRANT_PERSISTABLE_URI_PERMISSION
查看文档:
https://developer.android.com/reference/android/content/Intent.html#ACTION_OPEN_DOCUMENT
答案 1 :(得分:0)
Unfortunately SAF in KitKat doesn't have that advanced capability.
Depending on what you need, starting API 24 you can ask user to grant you permission to manage files in SD card by calling https://developer.android.com/reference/android/os/storage/StorageVolume.html#createAccessIntent(java.lang.String).
In API 21 - 23 you can direct user to grant you the entire SD card by invoking https://developer.android.com/reference/android/content/Intent.html#ACTION_OPEN_DOCUMENT_TREE.
That will grant you access through SAF to the sdcard, and you can leverage SAF to show/modify contents in SD card easily.