簡體   English   中英

在Xamarin表單的Web視圖中訪問麥克風時出現錯誤?

[英]error while accessing the microphones using in web view in xamarin forms?

我在webview中顯示groupword API。 Webview無法將我的手機麥克風和揚聲器連接到我的應用程序的所有權限。

    async Task<bool> RequestPermission()
    {
        var status = PermissionStatus.Unknown;
        status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Microphone);
        if (status != PermissionStatus.Granted)
        {
            if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Microphone))
            {
                //await DisplayAlert("Need Microphone", "We need microphone permission", "OK");
                return false;
            }

            var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Microphone);
            status = results[Permission.Microphone];
            return true;

        }
        if (status == PermissionStatus.Granted)
        {
            return true;
        }
        return false;
    }

調用WebView

  var Status = await RequestPermission();
        if(Status)
        {
            await Navigation.PushAsync(new InAppBrowserXaml("https://www.groupworld.net/room/1/demo?hide_playback=true"));


        }
        else
        {
            await DisplayAlert("Need Microphone", "We need microphone permission", "OK");
            return;
        }

您需要使用CustomRenderer授予權限

在您的Android項目中。

using Android.App;
using Android.Content;
using Android.Net.Http;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Webkit;
using Android.Widget;
using xxx;
using xxx.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(CustomWebViewRenderer))]
namespace xxx.Droid
{

    public class MyWebChromeClient : WebChromeClient
    {

        public override void OnPermissionRequest(PermissionRequest request)
        {
            base.OnPermissionRequest(request);

            request.Grant(request.GetResources());

        }
    }


    public class CustomWebViewRenderer : WebViewRenderer
    {

        public CustomWebViewRenderer(Context context) : base(context)
        {

        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                var customWebView = Element as Xamarin.Forms.WebView;
               // Control.SetBackgroundColor (Android.Graphics.Color.Red);

                Control.Settings.JavaScriptEnabled = true;
                Control.SetWebChromeClient(new MyWebChromeClient());
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM