【问题标题】:File path in Android studioAndroid Studio 中的文件路径
【发布时间】:2019-08-13 18:04:28
【问题描述】:

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

调用方法时提示:java.io.FileNotFoundException

虽然我手动插入确切路径: 文件/存储/仿真/0/Android/data/com.example.admin.mailsender/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();
    }

【问题讨论】:

    标签: java android jakarta-mail


    【解决方案1】:
    file/storage/emulated/0/Android/data/com.example.admin.mailsender/files/test.xls
    

    这不是 Android 上的路径。充其量,这可能是一条有效的路径:

    /storage/emulated/0/Android/data/com.example.admin.mailsender/files/test.xls
    

    这是否是正确的路径将因设备和用户而异。对于您自己设备上的短期测试,欢迎您使用这样的硬编码路径,但通常您应该使用派生路径的方法。在这种情况下,那就是:

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

    ...其中context 是一些Context(您的ActivityApplication 单例等)。

    【讨论】:

    • 但是我怎样才能从那个 new File(context.GetExternalFilesDir(null), "test.xls") 中提取可以传递给方法的字符串路径?
    • @Kertix:嗯,理想情况下,如果您控制的是您的方法,您可以将File 对象传递给该方法。如果您正在调用一些需要字符串路径的库 API,请在 File 对象上调用 getAbsolutePath()
    • 通过Javamail api发送。但是 getAbsolutePath() 就像一个魅力。一直在与那几个小时作斗争。非常感谢您花时间。
    • JavaMail 接受 MimeBodyPart.attachFile method 中的 File 参数。
    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多