Codename One:在Android设备上用换行符记录文件内容



在我的应用程序中,我想通过电子邮件发送日志文件内容以进行调试。然而,在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( 使用(谷歌(Gmail客户端:

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

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

最新更新