将文件保存到Android棒棒糖上的SD卡

将文件保存到Android棒棒糖上的SD卡,android,android-5.0-lollipop,android-sdcard,android-file,documentfile,Android,Android 5.0 Lollipop,Android Sdcard,Android File,Documentfile,安卓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 (r

安卓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对该文件夹拥有权限

但是否有可能通过其路径获得确切目录的权限?不使用文件夹选择器。我的意思是我知道目录,我想访问它,我不想启动文件夹选择器,因为它会让用户感到困惑


如何在没有用户交互的情况下打开文档文件?

这是不可能的。用户应该使用android的文件选择器选择目录。访问文件夹的唯一方法是使用:

Intent Intent=新意图(Intent.ACTION\u OPEN\u DOCUMENT\u TREE);
startActivityForResult(意向书,42)


因为文件是由Storage Access Framework DocumentsProvider提供的。实际上,它可以从第三方应用程序返回一些Uri,这不是真实的文件,而是某个实体,第三方应用程序以文件的形式呈现

请在jlopez处签出此答案,它不包含我问题的答案