Codename One: содержимое файла журнала с символами новой строки на устройстве Android - PullRequest
2 голосов
/ 07 мая 2020

В моем приложении я хочу отправить по электронной почте содержимое файла журнала для отладки. Однако на устройстве 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();
}

Тестирование на Samsung Galaxy Tab A 10.1 дает:

1) с использованием (Samsung) почтового клиента:

[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 

1 Ответ

0 голосов
/ 08 мая 2020

Это разница между поведением Windows и Unix новой строки. Android, будучи unix, использует обычный \n, тогда как Windows использует \r\n, как описано здесь: https://www.baeldung.com/java-string-newline

...