Java Android studio中的文件路径

Java Android studio中的文件路径,java,android,jakarta-mail,Java,Android,Jakarta Mail,我正在尝试发送带有附件的电子邮件,除了附件外,一切正常 调用方法时,它会显示:java.io.FileNotFoundException 虽然我手动插入了精确路径: file/storage/emulated/0/Android/data/com.example.admin.mailssender/files/test.xls 实际上,我还没有声明函数应该在哪里,但提供的路径还不够吗 private void sendEmail() { //Getting content

我正在尝试发送带有附件的电子邮件,除了附件外,一切正常

调用方法时,它会显示:java.io.FileNotFoundException

虽然我手动插入了精确路径: file/storage/emulated/0/Android/data/com.example.admin.mailssender/files/test.xls

实际上,我还没有声明函数应该在哪里,但提供的路径还不够吗

    private void sendEmail() {
        //Getting content for email
        String email = "test@gmail.com";
        String subject = "Test";
        String message = "Test - body";
        String filePath = "file/storage/emulated/0/Android/data/com.example.admin.mailsender/files/test.xls";


        //Creating SendMail object
        SendMail sm = new SendMail(this, email, subject, message, filePath );

        //Executing sendmail to send email
        sm.execute();
    }
这不是Android上的路径。充其量,这可能是一个有效的路径:

/storage/emulated/0/Android/data/com.example.admin.mailsender/files/test.xls
这是否是正确的路径将因设备和用户而异。对于在您自己的设备上进行的短期测试,欢迎您使用这样的硬编码路径,但一般来说,您应该使用方法来派生路径。在这种情况下,这将是:

new File(context.getExternalFilesDir(null), "test.xls")

…其中
context
是一些
context
(您的
活动
应用程序
单例等等)。

但是我如何从新文件(context.GetExternalFilesDir(null),“test.xls”)中提取可以传递给方法的字符串路径呢?@Kertix:理想情况下,您应该将
文件
对象传递给方法,如果你控制的是你的方法。如果您正在调用某些需要字符串路径的库API,请在
文件
对象上调用
getAbsolutePath()
。它由Javamail API发送。但是getAbsolutePath()的工作方式很有魅力。我一直在和那几个小时作斗争。非常感谢您花了这么多时间。JavaMail接受中的文件参数。
new File(context.getExternalFilesDir(null), "test.xls")