在Android 10(API-29)上,文件写入需要通过存储访问框架(Storage Access Framework)来实现。下面是一个简单的代码示例,演示了如何使用Storage Access Framework来写入文件:
// 引导用户选择保存文件的位置
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_TITLE, "example.txt");
startActivityForResult(intent, WRITE_REQUEST_CODE);
// 处理返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if (resultData != null) {
Uri uri = resultData.getData();
writeFileContent(uri);
}
}
}
// 写入文件内容
private void writeFileContent(Uri uri) {
try {
OutputStream outputStream = getContentResolver().openOutputStream(uri);
if (outputStream != null) {
outputStream.write("Hello, World!".getBytes());
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
在上述示例中,首先通过Intent.ACTION_CREATE_DOCUMENT
来启动存储访问框架,让用户选择保存文件的位置。然后在onActivityResult
方法中处理返回的结果,获取用户选择的文件URI。最后通过getContentResolver().openOutputStream(uri)
获取文件的输出流,并将数据写入文件。
请注意,上述代码片段仅演示了如何使用Storage Access Framework进行文件写入操作。在实际应用中,您可能还需要处理权限请求以及适配其他Android版本的文件写入方式。