在Android Lollipop上将文件保存到SD卡

时间:2015-05-21 07:03:52

标签: android android-5.0-lollipop android-sdcard android-file documentfile

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 个答案:

答案 0 :(得分:2)

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

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, 42);

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