У меня есть приложение 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) {
}
}
}
}