gpt4 book ai didi

android - 尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:56 24 4
gpt4 key购买 nike

我正在尝试一些简单的事情,比如创建一个文本文件,然后将其作为附件发送。虽然如果我使用 sdcard 它工作正常但我不知道将它放在“标准数据文件夹”中的什么位置所以我的应用程序实际上适用于没有 sdcard 的每个人(并且文件有点不可见)

虽然这段代码有效,但我将问题放在 <- * 评论中。

创建文件时:

String FILENAME = "myFile.txt";
String string = "just something";

// create a File object for the parent directory
File myDirectory = new File("/sdcard/myDir/"); // ******** <- what do I have to put HERE for standard data folder????
// have the object build the directory structure, if needed.
myDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(myDirectory, FILENAME);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = null;
//always have to put try/catch around the code - why? I don't know
try {
fos = new FileOutputStream(outputFile);
} catch (FileNotFoundException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}

//again have to put try/catch around it - otherwise compiler complains
try {
fos.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

发送文件时:

public void doSendFile() {
String fileName = "/sdcard/myDir/myFile.txt"; // ******** <- what do I have to put HERE for standard data folder????
Intent i = new Intent(Intent.ACTION_SEND);
try {
mainDataManager.logFileHandle.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { "to@someone.com" });
i.putExtra(Intent.EXTRA_SUBJECT, "subject");
i.putExtra(Intent.EXTRA_TEXT, "text");
Log.i(getClass().getSimpleName(),
"logFile=" + Uri.parse("file://" + fileName));
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + fileName));

try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getBaseContext(),
"There are no email clients installed.", Toast.LENGTH_SHORT)
.show();
}

}

我发现该文件在创建时似乎存储在“data/data/com.xxx.xxxx/databases/myFile.txt”。但是当我在附件中使用它时,什么也没有发送。

所以基本上我所需要的就是知道如何将文件存储在本地内存中,然后从那里发送它。因为不是每个人都可能有外部存储 SD 卡 - 我想。

谢谢!

最佳答案

这是因为 SD 卡没有被保护,所以你可以像以前一样用标准的 java 方式写入。

为了写入 Android 文件系统,您不能使用它,因为每个文件都使用应用 key 进行保护,以避免其他应用使用它。

您应该使用 openFileOutput() 查看本教程以获取更多信息:

http://www.anddev.org/working_with_files-t115.html

关于android - 尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8385009/

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