在我建立的应用程序的一部分中,有一个嵌入式zxing qr扫描仪,我在片段中使用它。
如果该应用尚未授予Manifest.permission.CAMERA
权限,则会询问该权限,然后继续启用扫描程序。
问题是,我在barcodeView.resume()
内拨打了onResume()
,我在onStart()
中要求获得许可。因此,它应该在barcodeView.resume()
内请求{em>首先和之后的权限。但显然恰恰相反,如果应用程序尚未被授予权限,则会抛出此异常
java.lang.NullPointerException:尝试调用虚方法' void com.journeyapps.barcodescanner.DecoratedBarcodeView.resume()'在...上 null对象引用
怎么会发生这种情况?是不是onResume()
之前没有onResume()
来电?
这是我的片段代码:
onStart()
答案 0 :(得分:0)
onStart,是的。
“权限请求”对话框未阻止,因此当您请求权限时,片段生命周期将继续。
所以它会是这样的:
- onStart
- 请求许可
- onResume(此时用户尚未授予权限)。
您需要检查onResume以查看barcodeView是否为空并且已授予权限。
如果授予了权限,onStart之后将立即调用onRequestPermissionsResult,因为如果授予了权限它不是异步的,那么这段代码就能正常工作。