【问题标题】:Codename One: Log file content with newlines on Android device代号一:在 Android 设备上使用换行符记录文件内容
【发布时间】:2020-08-23 00:51:48
【问题描述】:

在我的应用程序中,我想通过电子邮件发送日志文件内容以进行调试。但是,在 Android 设备上,换行符 (\n) 在邮件中显示为空格,而不是真正的换行符。 (它在 iPhone 和模拟器上都能正常工作。)这个问题可以修复还是有解决方法?

对了,为什么模拟器会截断邮件消息文本?

编辑:我刚刚在更新的平板电脑上进行了测试(2019 年对比 2013 年),问题就消失了。

编辑2:实际上它取决于电子邮件客户端。测试用例:创建一个Hello world项目并将start()改为:

public void start() {
    if(current != null){
        current.show();
        return;
    }

    Form hi = new Form("Test log", BoxLayout.y());

    Button b = new Button("Send log");
    b.addActionListener((ActionListener) (ActionEvent evt) -> {
        String text;
        try {
            byte[] read = com.codename1.io.Util.readInputStream(Storage.getInstance().createInputStream("CN1Log__$"));
            text = new String(read);
        } catch (IOException ex) {
            text = ex.getMessage();
        }
        sendMessage("Log file", new Message(text), "");
    });
    hi.add(b);

    log("line 1");
    log("line 2");

    hi.show();
}

在三星 Galaxy Tab A 10.1 上进行测试:

1) 使用(三星)电子邮件客户端:

[EDT] 0:0:0,33 - Codename One revisions: 7dd4e7d08b3442d90959477ee52a5ae8c4361b29

[EDT] 0:0:0,36 - line 1
[EDT] 0:0:0,39 - line 2

2) 使用 (Google) Gmail 客户端:

[EDT] 0:0:0,33 - Codename One revisions: 7dd4e7d08b3442d90959477ee52a5ae8c4361b29 [EDT] 0:0:0,36 - line 1 [EDT] 0:0:0,39 - line 2 

【问题讨论】:

    标签: android email newline codenameone


    【解决方案1】:

    这是 Windows 和 Unix 换行行为之间的区别。作为 unix 的 Android 使用普通的 \n,而 Windows 使用 \r\n,如下所述:https://www.baeldung.com/java-string-newline

    【讨论】:

    • 是的,我知道这一点。但这是 Android 上的 CN1 应用程序,它通过 Android 电子邮件客户端 (Gmail) 发送消息。该消息应包含 \n 个字符(对于 Android,等于 System.getProperty("line.separator"))。但是,Gmail 中的预览(在设备上)没有显示换行符。这一切都发生在消息甚至被发送之前(发送到另一个操作系统上的收件人,例如 Windows)。那么你能想出一个解决方法吗?
    • 另外,为什么模拟器会截断邮件消息文本?
    • 您是否在 HTML 电子邮件中包含了内容?您可能会在需要
      的地方看到 HTML 电子邮件的预览。桌面构建/模拟器中并不真正支持电子邮件。这是使用 mailto URL 进行调试的模拟。
    • 感谢您的回答。我刚刚在更新的平板电脑(2019 vs 2013)上进行了测试,问题就消失了(见编辑)。
    • 如果这不一致,那么我们也许可以做点什么。你能从中分离出一个测试用例吗?
    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2014-01-03
    • 2013-01-10
    相关资源
    最近更新 更多