Android – Как удалить изображение из галереи в .NET MAUI?C#

Место общения программистов C#
Ответить
Anonymous
 Android – Как удалить изображение из галереи в .NET MAUI?

Сообщение Anonymous »

Я пытаюсь удалить изображение программно с помощью .NET MAUI, но получаю следующую ошибку:

Код: Выделить всё

{Java.Lang.IllegalArgumentException: Unknown URL /storage/emulated/0/Pictures/MyApp/7b7dc4c5d3a64ecdaa2b1d588bbfe1b51.jpg
at Java.Interop.JniEnvironment.InstanceMethods.CallNonvirtualIntMethod(JniObjectReference instance, JniObjectReference type, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:line 20647
at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeNonvirtualInt32Method(String encodedMember, IJavaPeerable self, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:line 538
at Android.Content.ContentResolver.Delete(Uri url, String where, String[] selectionArgs) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Content.ContentResolver.cs:line 802
at MyApp.MAUI.Platforms.AndroidServices.SavePictureService.DeletePicture() in C:\Users\OoPer\source\repos\MyApp_Clear_Images_And_Copy_To_Gallery\MyApp.MAUI\Platforms\Android\SavePictureService.cs:line 58
}
Вот мой код:

Код: Выделить всё

PermissionStatus statusWrite = await Permissions.RequestAsync
();
PermissionStatus statusRead = await Permissions.RequestAsync();

PermissionStatus statusPhotos = await Permissions.RequestAsync();

var uri = MediaStore.Images.Media.ExternalContentUri;
var projection = new string[] { MediaStore.Images.Media.InterfaceConsts.Data };

var contentResolver = Application.Context.ContentResolver;
var cursor = contentResolver.Query(uri, projection, null, null, null);
if (cursor != null && cursor.MoveToFirst())
{
do
{
var imagePath = cursor.GetString(cursor.GetColumnIndexOrThrow(MediaStore.Images.Media.InterfaceConsts.Data));
if (imagePath.Contains("/MyApp/"))
{
Android.Net.Uri imageUri = Android.Net.Uri.Parse(imagePath.ToString());

contentResolver.Delete(imageUri, null, null);
}
} while (cursor.MoveToNext());
}

cursor?.Close();

return true;
Мои разрешения в AndroidManifest.xml: Код не работает в contentResolver.Delete(imageUri, null, null);
Я ожидаю, что изображение будет удалено из Галерею, но ее нет, и у меня возникает вышеуказанная ошибка.

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-net-maui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»