QR Code Scanner App 完美运行,除了牛轧糖

QR Code Scanner App works perfectly EXCEPT in Nougat

自从我上次在这里提问已经有一段时间了。 Googled、Stack-Overflowed 等 - 感觉没有其他人遇到过这个问题。

无论如何,我为一个客户创建了一个应用程序,该应用程序可以从他们员工的 ID 中读取二维码来为他们计时;一个扭曲的邦迪时钟。我不太擅长 Android 编程,但总体上我很擅长编程;我的背景是 Visual Basic 和 Java。我用 Google 的 Vision API 作为相机,效果很好。我使用 API-17,因为我唯一可用的用于测试的平板电脑在 Jelly Bean 上运行。

因此,我的客户为该应用购买了一台平板电脑,它在 Nougat 7.0 上运行。出于某种原因,SurfaceView 只是坐在那里。它可以 "see" 但它不读取二维码。我点击它以自动对焦,甚至更改首选相机(我内置到我的代码中),但它仍然无法读取任何 QR 码。我在 运行 Kitkat、Lollipop、Marshmallow、Oreo,甚至 Pie 设备上安装了我的应用程序,除了那个 运行 Nougat,它们都可以正常工作!不过,我还没有尝试将它安装在另一台带有牛轧糖的设备上,我可能会在这篇文章发布后这样做——也许是设备本身的问题?它是 Huawei Mediapad M3 Lite 并基于 Nougat 自己定制 OS 运行,所以它也可能是那样。

但是,以防万一我遗漏了什么,也许在 Android 编程方面具有更多专业知识的人可以帮助揭开这个谜团。

更新:我在 Nougat-7.1 设备上安装了我的应用程序,它运行正常。我在 Mediapad M3 Lite 中重新安装了该应用程序,但仍然无法正常工作。我倾向于认为这个问题可能与Nougat-7.0或华为(EMUI 5.1.3)的自定义OS有关。

好的,我明白了。它与 Custom OS - EMUI 有关。我摆弄了一下平板电脑,在“设置”的“高级”部分的某处找到了 "additional permissions" 设置。我允许它用于 运行 "debug" 个应用程序并且它起作用了。奇怪的是,应用程序做了 运行 但只是没有读取 QR 码。但是这个选项似乎已经修复了它并显示了一个新的。

我对它应该读取的代码进行了 REGEX 验证,如果 QR 码无效则抛出错误。现在,它只读取任何二维码并跳过验证。我检查了我安装该应用程序的所有其他设备,所有来自 Lollipop 及以上的 Android 设备都有同样的问题——它们都跳过了验证。然而,Kitkat 和 Jelly Bean 完美地完成了验证。这个我应该可以通过一些研究自己弄清楚。

对于那些阅读我的 post 并且也感到困惑的人,我深表歉意。