科尔多瓦:总是设备已经没有解雇

时间:2018-02-08 13:51:25

标签: javascript android cordova cordova-plugins

我还有Cordova的另一个问题。我想在Cordova 7.1.0中使用插件“cordova.custom.plugins.exitapp”和“cordova-plugins-printer”。
在服务器端,我已将document.AddEventListener构建到$(document).ready(function() {});

的.js:

$(document).ready(function(){

...

document.addEventListener("deviceready", exitFromApp, false);

...

}),


function exitFromApp() {

    console.log("NAVIGATOR: " + navigator);
    console.log("NAVIGATOR.APP: " + navigator.app);
    console.log("NAVIGATOR.APP.EXITAPP: " + navigator.app.exitApp());

    navigator.app.exitApp();
}


无论我是否使用addEventListener,Android Studio总是说:
- 5秒钟后设备已经没有发射 - 频道未被解雇:onPluginsReady
- 频道未被解雇:onCordovaReady

但不同之处在于addEventListener不会调用exitFromApp()函数。
当我直接调用exitFromApp()时,它可以正常工作,但navigator.app未定义(或者未定义cordova.plugins / window.plugins)。
在header.php中调用cordova.js,因此始终可用。

如果我在平板电脑上通过index.html使用插件,它可以正常工作。

我已在 config.xml 中设置了权限:

<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

安装:
Cordova 7.1.0
cordova-plugin-inappbrowser 2.0.1
cordova-plugin-network-information 2.0.1
cordova-plugin-whitelist 1.3.3
cordova.custom.plugin.exitapp 1.0.0
phonegap.plugin-barcodescanner 7.0.1
cordova-plugin-printer 0.7.3

1 个答案:

答案 0 :(得分:1)

deviceready事件在$(document).ready()之前被触发你想在两个人被解雇之后做你的东西..试试这个..

var DomReady = new Promise(done=>$(document).ready(done));
var deviceReady = new Promise(done=>document.addEventListener("deviceready", done, false));
Promise.all[DomReady, deviceReady].then(()=>{
  // both device and dom are ready
});

...或者您可以将deviceReady调用放在documetnt就绪调用之外,因为我确信设备就绪状态始终是第一个。