将 ZXingScannerPage 与 XF 一起使用,我的内容页面出现奇怪的行为
Using ZXingScannerPage with XF, my content page has weird behavior
我正在制作一个 xamarin 形式的应用程序,我将有一个类似于 whatapp web 的登录名,一个屏幕上的二维码,将由 phone 在模拟器中使用 visual studio 2017 我没有问题,但是当我将应用程序导出到 apk 并安装在移动设备上时,应用程序读取 qr 和 returns 到以前的登录屏幕,没有任何反应,这应该转到我有仪表板的下一个屏幕。
可以是什么?我附上我使用的代码。
btnScanQRCode.IsEnabled = false;
var scan = new ZXingScannerPage();
scan.OnScanResult += (result) =>
{
scan.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
await Application.Current.MainPage.Navigation.PopAsync();
var resultado = JsonConvert.DeserializeObject<QrCode>(result.Text);
JObject qrObject = JObject.Parse(JsonConvert.SerializeObject(resultado));
JsonSchema schema = JsonSchema.Parse(SettingHelper.SchemaJson);
bool valid = qrObject.IsValid(schema);
if (valid == true)
{
App.Database.InsertQrCode(resultado);
QrCode qr = App.Database.GetQrCode();
await _viewModel.Login();
await Navigation.PushAsync(new Organization());
}
else
{
await DisplayAlert("False", JsonConvert.SerializeObject(resultado), "ok");
}
});
};
await Application.Current.MainPage.Navigation.PushAsync(scan);
btnScanQRCode.IsEnabled = true;
这本来是一个评论,但通过写作我意识到这就是答案。
您需要调试代码。附加设备并在调试配置中部署应用程序。单步执行您的代码,看看哪里出错了。
听起来它正在悄无声息地崩溃,而且可能是在您在 QrCode
中反序列化 result.Text
的那一行。 result.Text
只是一个字符串,永远不会反序列化为一个对象。您可能需要一个采用 QrCode(result.Text)
.
之类的字符串的构造函数
首先扫描,然后使用扫描结果在您的应用中执行其他操作。
var scanner = new ZXing.Mobile.MobileBarcodeScanner();
var result = await scanner.Scan();
检查相机权限是否正确。我打赌你的问题就在那里。
我正在制作一个 xamarin 形式的应用程序,我将有一个类似于 whatapp web 的登录名,一个屏幕上的二维码,将由 phone 在模拟器中使用 visual studio 2017 我没有问题,但是当我将应用程序导出到 apk 并安装在移动设备上时,应用程序读取 qr 和 returns 到以前的登录屏幕,没有任何反应,这应该转到我有仪表板的下一个屏幕。
可以是什么?我附上我使用的代码。
btnScanQRCode.IsEnabled = false;
var scan = new ZXingScannerPage();
scan.OnScanResult += (result) =>
{
scan.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
await Application.Current.MainPage.Navigation.PopAsync();
var resultado = JsonConvert.DeserializeObject<QrCode>(result.Text);
JObject qrObject = JObject.Parse(JsonConvert.SerializeObject(resultado));
JsonSchema schema = JsonSchema.Parse(SettingHelper.SchemaJson);
bool valid = qrObject.IsValid(schema);
if (valid == true)
{
App.Database.InsertQrCode(resultado);
QrCode qr = App.Database.GetQrCode();
await _viewModel.Login();
await Navigation.PushAsync(new Organization());
}
else
{
await DisplayAlert("False", JsonConvert.SerializeObject(resultado), "ok");
}
});
};
await Application.Current.MainPage.Navigation.PushAsync(scan);
btnScanQRCode.IsEnabled = true;
这本来是一个评论,但通过写作我意识到这就是答案。
您需要调试代码。附加设备并在调试配置中部署应用程序。单步执行您的代码,看看哪里出错了。
听起来它正在悄无声息地崩溃,而且可能是在您在 QrCode
中反序列化 result.Text
的那一行。 result.Text
只是一个字符串,永远不会反序列化为一个对象。您可能需要一个采用 QrCode(result.Text)
.
首先扫描,然后使用扫描结果在您的应用中执行其他操作。
var scanner = new ZXing.Mobile.MobileBarcodeScanner(); var result = await scanner.Scan();
检查相机权限是否正确。我打赌你的问题就在那里。