Я пытаюсь удалить изображения с SD-карты, сохраненные с помощью мобильного приложения.
Я использую contentresolver.Delete в формах xamarin, с помощью которых временно удаляет изображение.
В подробностях об изображении SD-карты путь отличается, а в Диспетчере файлов изображения для SD-карты сохраняются по другому пути.
Если я использую
File.delete(file)
Выдает исключение, говорящее, что я не иметь разрешение на удаление файла в этом месте (это путь к изображению SD-карты)
Ниже добавлены разрешения в Android манифесте:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
Код для поиска пути к SD-карте:
var file1 = new Java.IO.File("storage/");
listOfStorages = file1.ListFiles();
if (listOfStorages[1].Name.Contains("emulated") || listOfStorages[0].Name.Contains("-"))
{
isSDPresent = true;
var sdfilepath = listOfStorages[0].AbsolutePath + "/DCIM/Camera/";
bool status = Android.OS.Environment.IsExternalStorageEmulated;
List<string> sdimagelist = Directory.GetFiles(sdfilepath).Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date).ToList();
foreach (var filpath in sdimagelist)
{
if (!currentDCIMImagesList.Contains(filpath))
{
currentDCIMImagesList.Add(filpath);
}
}
}
Код для удаления изображения с SD-карты:
var query = afterDCIMImagesList.Where(item => !currentDCIMImagesList.Contains(item));
foreach (string file in query)
{
Java.IO.File aFile = new Java.IO.File(file);
string where = MediaStore.MediaColumns.Data + "=?";
string[] selectionArgs = new string[] { aFile.AbsolutePath };
ContentResolver contentResolver = context.ContentResolver;
Android.Net.Uri filesUri = MediaStore.Files.GetContentUri("external");
if (aFile.Exists())
{
//Android.Net.Uri uri = Android.Net.Uri.Parse(file);
//contentResolver.Delete(uri, null, null);
contentResolver.Delete(filesUri, where, selectionArgs);
}
Пожалуйста, помогите мне решить эту проблему. Спасибо