Сохранение данных во внутреннюю память - Android 9.0 (телефон Samsung) - PullRequest
0 голосов
/ 03 марта 2020

У меня есть приложение android, которое получает данные в режиме реального времени от Bluetooth Low Energy и сохраняет данные в виде txt-файла во внутренней памяти телефонов. В частности, мое приложение создаст папку с фиксированным именем во внутренней памяти, и данные будут сохранены как текстовый файл с автоматически созданным именем в этой папке. Ниже приведен код для сохранения данных, которые я написал, но он просто работал на некоторых телефонах с android под 9.0 и не на телефоне Samsung. Когда я создавал свое приложение на Samsung Galaxy A30 (Android 9.0), оно все еще работало как обычно, но папка не была создана или текстовый файл не сохранен в моем телефоне. Кто-нибудь может помочь мне исправить эту ошибку? Это мой код для сохранения данных:

public class SaveData {
public void save(final ArrayList<Double> dataSave) {

    String filename = nameFile()+".txt";
    OutputStreamWriter writer = null;

    File sdCard = Environment.getExternalStorageDirectory();
    if (sdCard.exists()) {
        File directory = new File(sdCard.getAbsolutePath() + "/EMG_Data");

        if (!directory.exists()) {
            directory.mkdirs();
            Log.i("making", "Creating Directory: " + directory);
        }

        Log.i("made", "Directory found: " + directory);

        File newFile = new File(directory, filename);
        try {
            writer = new OutputStreamWriter(new FileOutputStream(newFile));
            for (int i = 0; i < dataSave.size(); i++) {
                Log.i("writer", "Writing to file");
                writer.write((dataSave.get(i) + "\n"));
            }
            writer.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (writer != null) {
            try {
                writer.close();
            } catch (IOException e) {
            }
        }

    }
}
...