android - 如何授予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
解决方案
将此行添加到 Android 中的 MainActivity
CrossCurrentActivity.Current.Init(this, savedInstanceState);
将这些行添加到您的代码 AsseblyInfo
[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]
推荐阅读
- python - 如何在 python 中找到以下矩阵的行列式?A = np.array([[1-'a'-'y','a'],['b', 'y']])
- debugging - Linux 内核符号地址在 /proc/kcore 和 /proc/kallsyms 之间不匹配
- c++ - Visual Studio 2017 中 WinRT 自动生成的模板编译错误
- objective-c - 已元数据编辑到相机胶卷的“orientation = 6”的水平方向无法保存
- android - onChildAdded 开始被调用的时间太长
- javascript - show next/previous items of an array
- angular - 角度扁平化可观察流
- python - 有没有办法在嗖嗖声的 QueryParser 中返回距离
- jenkins - Where's the list of available functions or API available to me by default in a Jenkinsfile?
- java - 无法让我的 MouseListener 为高中的口袋妖怪游戏工作