首页 > 解决方案 > 如何授予xamarin相机权限

问题描述

我想将相机添加到我的 xamarin 表单应用程序中。我看了这个视频。 https://www.youtube.com/watch?v=DJYLrVNY2ak&t=645s

完成所有工作后,我得到了权限错误。

错误说:

未处理的异常:Plugin.Media.Abstractions.MediaPermissionException:需要相机权限

此代码位于 MainPage.xaml.cs

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Plugin.Media.Abstractions;
using Plugin.Media;
using Plugin.Permissions;
using Plugin.Permissions.Abstractions;

namespace camera
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void Button_Clicked(object sender, EventArgs e)
        {


            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable
                || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await DisplayAlert("No Camera", "No Camera available", "Ok");
                return;
            }

            var file = await CrossMedia.Current.TakePhotoAsync(

                new StoreCameraMediaOptions
                {

                    SaveToAlbum = true,

                });

            if (file == null)
                return;

            PathLabel.Text = file.AlbumPath;

            MainImage.Source = ImageSource.FromStream(() =>
            {
                var stream = file.GetStream();
                file.Dispose();
                return stream;


            });




        }
    }
}

这段代码在 MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:camera"
             x:Class="camera.MainPage">

    <StackLayout>
        <!-- Place new controls here -->
        <Label Text="Welcome to Xamarin.Forms!" 
           HorizontalOptions="Center"
           VerticalOptions="CenterAndExpand" />

        <Button Text="Take a Photo"
                Clicked="Button_Clicked">

        </Button>

        <Image x:Name="MainImage"></Image>
        <Label x:Name="PathLabel"></Label>


    </StackLayout>

</ContentPage>

模拟器打开很好。当我点击“拍照”按钮时。我得到权限错误。

这是错误图像。 错误图片

这是文件的链接。您可以下载该文件并查看错误。我想要这个应用程序做的就是拍摄一些细节,拍照并保存照片。文件链接 https://contedia-my.sharepoint.com/personal/muhammad_ikram_contedia_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fmuhammad%5Fikram%5Fcontedia%5Fcom%2FDocuments%2FPhotos%20%282%29% 2Ezip&parent=%2Fpersonal%2Fmuhammad%5Fikram%5Fcontedia%5Fcom%2FDocuments&slrid=6f5b859e-50d6-0000-25d8-0fa7f8d3f9ce

标签: androidformsxamarinpermissionscamera

解决方案


将此行添加到 Android 中的 MainActivity

CrossCurrentActivity.Current.Init(this, savedInstanceState);

将这些行添加到您的代码 AsseblyInfo

[assembly: UsesFeature("android.hardware.camera", Required = false)] [assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]


推荐阅读