我想将相机添加到我的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>
模拟器打开正常。当我单击“拍摄照片”按钮时。我收到权限错误。
这是错误图像。 Error image
这里是文件链接。您可以下载文件并查看错误。 我想要这个应用程序要做的就是记录一些细节,拍照并保存图片。 链接到文件 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
答案 0 :(得分:0)
我也有例外,需要相机许可。尝试将以下代码添加到{$link->getPageLink('cart', true, NULL, 'add=1&id_product=1&ipa=1&token='|cat:$static_token, false)|escape:'html':'UTF-8'}
至MainActivity
方法中。它应该询问用户摄像机的权限–您应该在设备上看到警报
OnCreate()
然后将以下内容放入android清单(或选中复选框)
int requestPermissions;
string cameraPermission = Android.Manifest.Permission.Camera;
if (!(ContextCompat.CheckSelfPermission(this, cameraPermission) == (int)Permission.Granted))
{
ActivityCompat.RequestPermissions(this, new String[] { cameraPermission, }, requestPermissions);
}
也许以下链接也可能有帮助- https://docs.microsoft.com/cs-cz/xamarin/android/app-fundamentals/permissions?tabs=vswin
答案 1 :(得分:0)
简短答案: 通过“设置”->“应用”->“ YOUR_APP_NAME”->“权限”检查是否已将权限授予该应用。
长答案: 我注意到甚至使用其他答案中的信息,我仍然遇到相同的错误,因此我在“设置”->“应用程序”->“ YOUR_APP_NAME”->“权限”中检查了该应用程序的权限,即使我被授予了摄像头访问权限,弹出窗口时显示的应用程序,这里我仍然没有授予该应用程序任何权限。因此,从这里打开许可后,一切都正常。
答案 2 :(得分:0)
将此行添加到Android中的MainActivity
CrossCurrentActivity.Current.Init(this, savedInstanceState);
将这些行添加到您的代码AsseblyInfo
[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]