Question: Using Cordova 6.3.1, I installed the following Crodova plugins:
cordova-plugin-camera, cordova.plugins.diagnostic, phonegap-plugin-barcodescanner

I'm using the following JavaScript code to access the Camera and scan a QR code:

```
function scanQR() {
    cordova.plugins.diagnostic.requestCameraAuthorization(function(status) {
        console.log("Authorization request for camera returned " + status);
        if (status == cordova.plugins.diagnostic.permissionStatus.GRANTED) {
            try {
                cordova.plugins.barcodeScanner.scan(scanQRDone, function (error)   {
                    console.log(error);
                });
            } catch (e) {
                console.log(e.message);
            }
        }
    }, function (error) {
        console.log(error);
    });
}

function scanQRDone(result) {
    console.log(result);
}

```

The requestCameraAuthorization call prompts for a confirmation on the device and when allowed returns status GRANTED.
However the call to cordova.plugins.barcodeScanner.scan simply crashes the application on the Nexus 7.

The actual line in which the crash occurs is cordova.js line 940:

```
var msgs = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);

```

Where service="BarcodeScanner" and action="scan"
Seems like some kind of version mismatch in native code, any ideas are welcomed.

Answer: 
QWebPage was a class in the module QtWebKit in PyQt4. This module has been depreciated and seperated as an optional add-on to PyQt5. To install:

```
pip install PyQtWebEngine

```

QtWebKit has been replaced with QtWebEngineWidgets and the corresponding class that has replaced QWebPage is QWebEnginePage. So you should say:

```
from PyQt5.QtWebEngineWidgets import QWebEnginePage

```
Try using this
 from PyQt5.QtWebKitWidgets import QWebView,QWebPage