Android 5引入了用于处理SD卡的新API . 如果要将文件写入SC卡上的某个目录,则需要访问它 . 据我所知,可以这样做:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, 42);
然后:
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (resultCode == RESULT_OK) {
Uri treeUri = resultData.getData();
getActivity().getContentResolver().takePersistableUriPermission(treeUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
}
这个代码启动文件夹选择器,当选择文件夹时,它需要文件夹的权限由它的Uri .
但它是否可以通过它的路径获取精确目录的权限?不使用文件夹选择器 . 我的意思是我知道目录,我想要访问,我不想启动文件夹选择器,因为它会混淆用户 .
如何在没有用户交互的情况下打开 DocumentFile
?
1 回答
不可能 . 用户应该使用android的文件选择器选择目录 . 访问文件夹的唯一方法是使用:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, 42);
因为文件由Storage Access Framework DocumentsProvider提供 . 实际上它可以从第三方应用程序返回一些Uri,这不是真正的文件,而是一些实体,第三方应用程序作为文件呈现 .