C# Xamarin表单可以';t通道摄像机

C# Xamarin表单可以';t通道摄像机,c#,android,xamarin,C#,Android,Xamarin,我的跨平台移动应用程序正在使用此代码拍照 public void TakePhoto() { Context context = MainActivity.Instance; MainActivity activity = (MainActivity)context; Intent intent = new Intent(MediaStore.ActionImageCapture);

我的跨平台移动应用程序正在使用此代码拍照

public void TakePhoto()
        {
            Context context = MainActivity.Instance;
            MainActivity activity = (MainActivity)context;
            Intent intent = new Intent(MediaStore.ActionImageCapture);
            AppCamera._file = new Java.IO.File(AppCamera._dir, String.Format("Photo_{0}.jpg", DateTime.Now.ToString("ddmmyyhhmmss")));
            intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(AppCamera._file));
            activity.StartActivityForResult(intent, 1);
        }
我在Android版本4.4到7.0的平台上安装了这个应用程序,它运行得很好。 但Android版本为8.1的谷歌像素手机无法使用

注意:使用依赖项服务调用此函数

Xamarin.Forms.DependencyService.Register<ICameraProvider>();
DependencyService.Get<ICameraProvider>().TakePhoto()
Xamarin.Forms.DependencyService.Register();
DependencyService.Get().TakePhoto()
我使用的是Visual Studio 2017,Xamarin表单。我的项目构建属性平台的目标是最新的平台安卓8.1(Oreo)

知道问题出在哪里吗

Xamarin表单无法访问摄影机

正如Jesus Angulo和SushiHangover所说,权限需要请求用户在Android 6.0及更高版本上运行时批准。这用于请求运行时权限。您也可以在xamarin中参考此和此请求运行时权限。

下面是一个简单的演示:

        public void TakePhoto()
        {
            if (ContextCompat.CheckSelfPermission(Application.Context, Manifest.Permission.Camera) != (int)Permission.Granted)
            {
                var requiredPermissions = new String[] { Manifest.Permission.Camera };
                var activity = Xamarin.Forms.Forms.Context as Activity;
                ActivityCompat.RequestPermissions(activity, requiredPermissions, 100);
            }    
            while (ContextCompat.CheckSelfPermission(Application.Context, Manifest.Permission.Camera) != (int)Permission.Granted)
            {
                 //waiting user permission
            }    

            //Other code   
            //...
            //... 
        }
您还需要在AndroidManifest.xml中设置权限,否则它将自动被拒绝

<uses-permission android:name="android.permission.CAMERA" />


您如何请求权限?是的,权限已设置。。对于读/写和cameraRemember,在Android 6.0+中,您需要主动请求权限,清单权限仅供参考,在安装过程中默认不授予这些权限。安装应用程序后,不会请求任何权限。我在安装后设置权限,从设置->应用程序->我的应用程序->权限。在android mainifest中将目标版本设置为覆盖23。