c# - 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();
});
};
}
}
预期的结果将是第一次尝试成功扫描,但我只有在授予权限然后重新打开扫描仪页面后才能成功扫描。
解决方案
对我来说,Xamarin.Essentials 成功了。它有一个权限插件,可以帮助您请求权限,然后您可以毫无问题地启动扫描仪
推荐阅读
- json - 带有 JSON 参数的 Typescript Rest API POST 调用
- java - com.springboot.DatabaseSeeder 中构造函数的参数 0 需要一个名为“entityManagerFactory”的 bean,但无法找到
- c++ - 编译器默认生成构造函数 constexpr 吗?
- c# - .Net 4.6.2 C# 长路径处理 - 仅在发布版本中引发非法字符异常
- react-native - Pod install 安装不推荐使用的 react 并创建构建错误 'React/RCTBridge.h' not found
- php - Laravel 路由允许任何参数不起作用
- typescript - 在 Asp.Net Core 2 类库项目中启用 TypeScript 编译
- token - 无法验证以太坊 ERC20 代币
- android - 无法解析符号 notifyDatasetChanged
- javascript - d3.csv 在 console.log 中返回 index.html 内容