Access to the path '/data/user/0/com.companyname.hidden_wiretapping/files' is denied.'
помогите мне разобраться, я хочу сохранить свою аудиозапись на внешнем хранилище, я дал доступ к android.manifest, а также попросил у пользователя разрешение (CheckPermisissions), но я не могу получить доступ к записи
Вот мой манифест
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.hidden_wiretapping" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="30" />
<application android:label="Hidden_Wiretapping.Android" android:theme="@style/MainTheme"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
</manifest>
Вот мой код, в котором я пытаюсь сохранить аудиозапись в папку
private async void Start_Clicked(object sender, EventArgs e)
{
if (!audioRecorderService.IsRecording)
{
var mainDir = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var PermissionsStrorage = await Permissions.CheckStatusAsync<Permissions.StorageWrite>();
var PermissionsMicrophone = await Permissions.CheckStatusAsync<Permissions.Microphone>();
if (PermissionsStrorage != PermissionStatus.Granted && PermissionsMicrophone != PermissionStatus.Granted)
{
PermissionsStrorage = await Permissions.RequestAsync<Permissions.StorageWrite>();
PermissionsMicrophone = await Permissions.RequestAsync<Permissions.Microphone>();
}
if (PermissionsStrorage != PermissionStatus.Granted && PermissionsMicrophone != PermissionStatus.Granted)
{
return;
}
var file = Path.Combine(mainDir, "count.txt");
File.Create(file);
audioRecorderService.TotalAudioTimeout = TimeSpan.FromSeconds(3);
audioRecorderService.FilePath = mainDir;
await audioRecorderService.StartRecording();
Start.TextColor = Color.Blue;
}
else
{
await audioRecorderService.StopRecording();
Start.TextColor = Color.Red;
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
File.Create(file) возвращает FileStream, который IDisposable кстати. Вы создаете и открываете файл, и никогда не закрываете. Скорее в других методах вы просто не можете ничего записать в файл вами же открытый.
Если надо создать пустой файл, то можно так
using (var fs = File.Create(file)) { }
Но я не вижу смысла в такой манипуляции. Создавать файл надо как раз при начале записи, а не заранее.