gpt4 book ai didi

android - SAF - ACTION_CREATE_DOCUMENT - 将文件保存到云端硬盘后,文件为空

转载 作者:行者123 更新时间:2023-12-05 00:17:06 27 4
gpt4 key购买 nike

我是 SAF 的初学者。我想做的就是保存配置,非常简单。假设该文件是 .conf。

我将 .conf 复制到 conf.txt 并将其保存在云端硬盘上。

这是我的代码:

            tools.deleteFile(dst);   // delete conf.txt if it exists
int res = tools.copyFile(src,dst); // copy .conf to conf.txt
if(res == -1) return;

tools.viewFile(dst);
// verify in Log info that the content of cnf.txt is correct

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, dst);
startActivity(intent);

我在云端硬盘中进行了保存。该文件出现在我的电脑上,但当我打开它时,它是空的。

当我执行相反操作时:ACTION_OPEN_DOCUMENT

   public void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
Uri uri;

if (resultCode == Activity.RESULT_OK){
if (requestCode == 30){
if (resultData != null) {
uri = resultData.getData();
try {
String content =
readFile(uri);
} catch (IOException e) {
e.printStackTrace();
}

函数readFile打开文件并在读取时停止,因为没有数据。

我做错了什么?

最佳答案

Intent(Intent.ACTION_CREATE_DOCUMENT) 用于CREATING 文本文件,并使用onActivityResult() 获取uri ( location) 从文件中,然后使用 OutputStreamWRITE数据 (byte[])到文件。


private void createAndSaveFile() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, "testFileSam.txt");

startActivityForResult(intent, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1) {
if (resultCode == RESULT_OK) {
try {
Uri uri = data.getData();

OutputStream outputStream = getContentResolver().openOutputStream(uri);

outputStream.write("Hi, welcome to Sam's Android classroom! Have a good day!".getBytes());

outputStream.close();

Toast.makeText(this, "Write file successfully", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this, "Fail to write file", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "File not saved", Toast.LENGTH_SHORT).show();
}
}
}

关于android - SAF - ACTION_CREATE_DOCUMENT - 将文件保存到云端硬盘后,文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com