android - 如何执行多个文件复制到共享集合下载,适用于 Android Q,范围存储?
问题描述
对于即将推出的Android Q Scoped Storage,我想知道我们如何执行文件从和到的复制?
在 Android Q 之前
我有几个图像文件,它们位于以下位置
Application.instance().getExternalFilesDir(null) + "/a.png";
Application.instance().getExternalFilesDir(null) + "/b.png";
Application.instance().getExternalFilesDir(null) + "/c.png";
为确保即使卸载应用程序仍保留这些文件,应用程序会将图像文件复制到以下位置
Environment.getExternalStorageDirectory() + "/com.yocto.wenote/backup/a.png";
Environment.getExternalStorageDirectory() + "/com.yocto.wenote/backup/b.png";
Environment.getExternalStorageDirectory() + "/com.yocto.wenote/backup/c.png";
一个简单的java.io.File
复制操作就可以做到这一点。
public static boolean copy(File src, File dst) {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(src);
out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
return true;
} catch (IOException e) {
Log.e(TAG, "", e);
} finally {
close(out);
close(in);
}
return false;
}
对于 Android Q,范围存储
java.io.File
在 Android Q、Scoped Storage 下不再可用。
根据https://developer.android.com/preview/privacy/scoped-storage
如果您的应用程序创建了属于用户的文件,并且用户希望在卸载您的应用程序时保留这些文件,则将它们保存到一种常见的媒体集合中,也称为共享集合。共享收藏包括:照片和视频、音乐和下载。
我们希望将 3 个图像文件复制到共享集合下载。但是,我们很难得到一个具体的代码示例,如何实现呢?
我们如何执行多个文件复制到共享集合下载,对于 Android Q,范围存储?
解决方案
称呼Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdirs()
File
现在,您可以使用标准API读取和写入仅限于您的应用程序文件的下载文件夹的沙盒视图。如果您打开默认文件应用程序并导航到下载,您将看到所有应用程序的所有下载,包括您的应用程序。(至少在模拟器上)
推荐阅读
- javascript - 我正在尝试在我的反应应用程序中使用 npm sqlite3,但我不断收到错误消息:“无法解析 '[...]\node_modules\node-pre-gyp\lib 中的 'aws-sdk'”
- sqlite - sqlite,如果计算结果为负,将base中的值替换为零
- android - 更改 Firebase 实时数据库中的键
- python-3.x - 在 python (globals())[method](param1,param2) 中与 exec('method(param1,param2)?
- r - 我需要帮助找到使用 R 工作室的间歇泉的短喷发团和长喷发团
- java - @Mapper 导入语句“import org.apache.ibatis.annotations.Mapper;”出现错误
- jquery - 检测用户何时在移动手指时按住特定 div
- packet - 使用 ML 检测 DDoS 后如何在 ryu 控制器中丢弃数据包
- c# - 为什么要在 AuthenticationBuilder.AddScheme 中配置选项
不工作? - botframework - 从 1:1 聊天机器人消息中单击 Teams 客户端中的通知时如何修复焦点中断?- 焦点转到活动选项卡而不是聊天