如何限制用户在xamarin中选择相机应用程序

问题描述 投票:0回答:1

我正在 Xamarin 上编写一个项目,我的任务是限制用户从除默认 Android 相机之外的任何应用程序获取照片。我曾尝试使用 ActionImageCapture 打开相机,但遇到了一些问题,特别是在将照片保存到文件时。所以我决定回到 TakePhotoAsync 方法,但我真的不知道如何限制用户选择相机应用程序并在其上启动主 Android 相机。如果您能帮助我一点点,我会感到很自豪!

使用 ActionImageCapture,甚至启动应用程序都遇到麻烦

        private void LaunchCamera()
        {
            try
            {
                Intent takePictureIntent = new Intent(MediaStore.ActionImageCapture);

                if (context != null)
                {
                    if (takePictureIntent.ResolveActivity(context.PackageManager) != null) - problem was here
                    {
                        // Создаем временный файл для сохранения изображения

                        if (photoFile != null)
                        {
                            // Получаем URI для временного файла
                            Android.Net.Uri photoUri = Android.Support.V4.Content.FileProvider.GetUriForFile(context, context.PackageName + ".fileprovider", photoFile);

                            // Передаем URI в Intent для сохранения изображения
                            takePictureIntent.PutExtra(MediaStore.ExtraOutput, photoUri);

                            // Запускаем камеру с запросом на получение результата
                            PhotoActivity.activityA.StartActivityForResult(takePictureIntent, 1);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);

            }
 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            if (requestCode == 1)
            {
                if (resultCode == Result.Ok)
                {
                    Android.Net.Uri imageUri = Android.Support.V4.Content.FileProvider.GetUriForFile(this, this.PackageName + ".fileprovider", PhotoTypeArrayAdapter.photoFile);
                    try
                    {
                        // Открыть поток для чтения изображения
                        using (var inputStream = Application.Context.ContentResolver.OpenOutputStream(imageUri))
                        {
                            if (inputStream != null)
                            {
                                // Создайте Bitmap из потока

                                var javaStream = new Java.IO.BufferedOutputStream(inputStream); - problem was here as well

                                // Сохраните Bitmap в "Публичные документы"
                                /*string path = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "saved_image.jpg");
                                System.IO.File.WriteAllBytes(path, BitmapToByteArray(bitmap));*/


                                // Дополнительная обработка или сохранение изображения
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex);

                    }
                }
                else
                {
                    // Обработка случаев, когда операция была отменена или завершилась с ошибкой
                }
            }
        }
c# android xamarin camera photo
1个回答
0
投票
                var fileApp = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
                    CompressionQuality = 50,
                    Name = "systemImgApp.jpg",
                    Directory = "sample"
                });
                if (fileApp == null)
                {
                    return;
                }
                Activity.PhotoActivity.imgSave.Text = fileApp.Path;

目前我只有这个,但没有必要选择将启动的应用程序,甚至限制用户选择相机应用程序的能力

© www.soinside.com 2019 - 2024. All rights reserved.