У меня проблемы с созданием нового каталога на внешнем хранилище в android studio. Возможно, придется что-то делать с разрешениями, но, насколько я знаю, все кажется хорошим.
Что я хочу сделать, это:
- Проверить, если каталог "/ storage / emulated / 0 / Recordings "существует, если нет - создайте каталог
- Проверьте, существует ли файл" /storage/emulated/0/Recordings/tempFile.raw ", если существует - удалите его
- Создайте файл внутри каталога, используя «новый FileOutputStream (имя файла);»
Код, использующий (упрощенно):
String filepath = Environment.getExternalStorageDirectory().getPath();
//returns "/storage/emulated/0"
File file = new File(filepath,"Recordings");
if(!file.exists()){
file.mkdirs();
}else{
Log.w(TAG, "Didn't work");
}
fileName= "Recording #" + recordingNumber; //int recordingNumber = 1
recordingNumber++;
absolutePath = file.getAbsolutePath() + "/" + fileName + "tempFile.raw";
try {
os = new FileOutputStream(absolutePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Ошибка, которую я Получение:
java.io.FileNotFoundException: /storage/emulated/0/Recordings/tempFile.raw (No such file or directory)
Примечание: в logcat нет слова «Не работает», что означает, что file.mkdirs () был выполнен.
Разрешения манифеста:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
Разрешения:
Внешнее хранилище на виртуальном устройстве:
Build.gradle:
android {
compileSdkVersion 28
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.soundrecorder"
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}