我目前正在使用少量的cordova插件开发一个相当大的PhoneGap项目,并且我遇到了使用网络信息plgin检索设备连接类型的困难。
应该注意的是,我正在使用命令行工具来构建我的PhoneGap项目,而不是Adobe的“Build”服务。
phonegap和cordova cli工具的版本如下:
% phonegap -v
4.2.0-0.23.0
% cordova -v
4.2.0
以下是当前使用的插件列表:
% phonegap plugins
com.darktalker.cordova.screenshot 0.1.0 "Screenshot"
nl.x-services.plugins.socialsharing 4.3.14 "SocialSharing"
org.apache.cordova.console 0.2.13 "Console"
org.apache.cordova.device 0.3.0 "Device"
org.apache.cordova.inappbrowser 0.6.0 "InAppBrowser"
org.apache.cordova.network-information 0.2.15 "Network Information"
以下是负责使用插件的代码,它位于一个更大的对象中,只有在我打开项目的某个页面时才会被调用:
checkDeviceConnexion:function(){
require(['cordova', 'cordova_plugins'], function(cordova){
checkConnexion();
});
function networkConnexion(){
if (navigator.connection.type == 'none'){ //Connection.NONE
return false;
}
return true;
}
function checkConnexion(){
if (!networkConnexion()){
app.showMsgError(tradu[lang]['msg-error-connexion']);
}
}
}
我正在对android进行测试我正在使用adb作为调试应用程序的方法。当我运行上面的代码时,这就是我得到的:
I/chromium(12465): [INFO:CONSOLE(1145)] "Uncaught TypeError: Cannot read property 'type' of undefined", source: file:///android_asset/www/js/app.js (1145)
我多次废弃并重建了android项目,以确保所有插件都已正确复制,但没有帮助。
更令人费解的是,adb的输出暗示网络管理员应该以某种方式正常工作,如下所示:
D/CordovaNetworkManager(21764): Connection Type: wifi
D/CordovaNetworkManager(21764): Connection Extra Info: "atelier8"
但是我无法在导航器对象中看到连接属性。
有没有人遇到过类似的问题?关于如何解决这个问题的任何想法?
提前感谢任何提示或回答。