小编Siv*_*amy的帖子

SAF(存储访问框架)是否解决了Android 4.4(KitKat)中的SD卡WRITE问题?

在Android 4.4中,来自Play商店的应用程序只能写入其应用程序特定目录(例如:/storage/extSdCar/Android/data/com.example.myapp/),并且不允许应用程序在micro SD卡中写入此目录以外的内容.所以我正在探索新的SAF API来检查我是否可以使用SAF写入除应用程序特定目录之外的micro SD卡.

我已经通过创建示例提供程序和客户端应用程序来实现SAF.在我的提供商中,我尝试通过在queryRoots中实现以下代码来显示SD卡的全部内容:

    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(new File("/storage/extSdCard")));
    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE | Root.FLAG_SUPPORTS_RECENTS | Root.FLAG_SUPPORTS_SEARCH);
Run Code Online (Sandbox Code Playgroud)

我在我的客户端创建了以下意图,我可以通过我的提供商从SAF的系统UI浏览SD卡的全部内容.

    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_TITLE, "test.txt");
    startActivityForResult(intent, WRITE_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)

当我单击保存按钮时,我收到Toast错误"无法保存文档".但是当我导航到我的提供者的App特定目录(/storage/extSdCar/Android/data/com.example.myprovider/)时系统UI,我能够保存文档.也没有意图,如Intent.CATEGORY_WRITABLE,所以我只能获得可以编辑的文档.请帮我解决以下几点:

似乎即使我们使用SAF,仍然对micro SD卡的WRITE限制保持不变.它是否正确?

2.有什么方法可以创建或删除或修改micro SD卡中我的App特定目录之外的已有文件?

3.谁为普通用户文件决定FLAG_SUPPORTS_WRITE标志,如照片,视频,音乐,文档等?

java android android-sdcard android-4.4-kitkat storage-access-framework

10
推荐指数
1
解决办法
7116
查看次数