Я занимаюсь разработкой приложения для Android.Я хочу загружать файлы из Firebase Storage во внутреннее хранилище и впоследствии воспроизводить их (аудиофайлы).Я использую getFilesDir () для достижения этой цели.
На эмуляторе все отлично работает.Мой аудио каталог находится по адресу
/ data / user / 0 / com.package.name / files / audio /
Проблема возникает на некоторых Huaweiустройства (телефон и планшет) с Android API 28.
Я получаю сообщение об ошибке, что моя аудиопапка не может быть найдена в указанном выше месте и с файлом устройстваexplorer Я ясно вижу, что папка data / user / отсутствует, но вместо этого система по-прежнему использует старые каталоги / data / data / com.package.name / .
Итак, мой вопрос:
Кто-то есть идея, почему getFilesDir () не дает мне правильный путь и как я могу исправитьэто без жесткого кодирования пути.
Вот некоторый код, я также попытался вызов существует () в корневой папке, но безуспешно.
String filename = document.getId() + ".m4a";
String rootPath = getFilesDir().getAbsolutePath();
File root = new File(rootPath);
//not working
if(!root.exists()){
rootPath = "/data/data/" + getPackageName() + File.separator + "files"
+ File.separator + "voice" + File.separator;
}
//
String folderPath = rootPath + File.separator + "voice" + File.separator;
File subFolder = new File(folderPath);
if(!subFolder.exists()){
subFolder.mkdir();
}
final File localFile = new File(subFolder, filename);
final StorageReference voiceRef = uploadsRef.child("voice").child(filename);
voiceRef.getFile(localFile);