存储访问框架(Storage Access Framework,SAF)是Android提供的一种标准API,用于访问设备上的存储空间。通过SAF,我们可以将文件保存到下载文件夹。下面是具体的步骤:
implementation 'androidx.documentfile:documentfile:1.0.1'
private static final int REQUEST_CODE = 1;
private void requestStoragePermission() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri treeUri = data.getData();
// 保存授权的treeUri,后续使用
}
}
private void saveFileToDownloads(Uri treeUri, String fileName, String mimeType, byte[] fileData) {
DocumentFile downloadsDir = DocumentFile.fromTreeUri(this, treeUri);
DocumentFile file = downloadsDir.createFile(mimeType, fileName);
try {
OutputStream outputStream = getContentResolver().openOutputStream(file.getUri());
outputStream.write(fileData);
outputStream.close();
// 文件保存成功
} catch (IOException e) {
e.printStackTrace();
// 文件保存失败
}
}
在上述代码中,treeUri
是之前授权获得的树形URI,fileName
是要保存的文件名,mimeType
是文件的MIME类型,fileData
是文件的字节数组。
需要注意的是,SAF只能访问用户授权的目录,因此在保存文件之前,需要先请求用户授权并获取到授权的treeUri。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
请注意,以上答案仅供参考,具体实现方式可能因项目需求和环境而异。
领取专属 10元无门槛券
手把手带您无忧上云