首页 > 解决方案 > MobileBardodeScanner 无法扫描 QRCode,直到在授予相机权限后重新启动

问题描述

我正在尝试从我的 Xamarin.Forms 应用程序中扫描 QR 码,但直到我重新启动扫描仪后才检测到 QR 码。

我正在使用 ZXing.Net.Mobile.Forms。一旦ScannerPage被推送到导航堆栈上,它就会请求相机权限。完成请求后,它可以访问相机但不扫描二维码。我尝试更改权限处理程序,因为它在授予权限后重新启动扫描仪后工作,但这不起作用。

        private async void createScanPageAsync()
        {
        #if __ANDROID__
        // Initialize the scanner first so it can track the current context
        MobileBarcodeScanner.Initialize (Application);
        #endif
            var options = new MobileBarcodeScanningOptions()
            {
                TryHarder = true,
            };
            var scanPage = new ZXingScannerPage()
            {
                Title = AppResources.scanPageTitle,
                DefaultOverlayTopText = AppResources.scanPageTitle,
                DefaultOverlayShowFlashButton = true
            };
            await Navigation.PushAsync(scanPage);


            scanPage.OnScanResult += (scanResult) =>
            {
                scanPage.IsScanning = false;
                Vibration.Vibrate();
                QRCode scans = JsonConvert.DeserializeObject<QRCode>(scanResult.Text);
                AppPreferences.Network.Ip = scans.ip;
                AppPreferences.Network.Port = scans.port;

                Device.BeginInvokeOnMainThread(async () =>
                {
                    await Navigation.PopAsync();
                });
            };
        }
}

预期的结果将是第一次尝试成功扫描,但我只有在授予权限然后重新打开扫描仪页面后才能成功扫描。

标签: c#xamarin.formszxing.net

解决方案


对我来说,Xamarin.Essentials 成功了。它有一个权限插件,可以帮助您请求权限,然后您可以毫无问题地启动扫描仪


推荐阅读