我正在尝试检查我的 phonegap 应用程序中的网络状态(使用 phonegap 2.2.0),但是我显示的是一条警告,提示连接类型:未定义。当我执行 console.log 时,它返回 0。
我正在使用 phonegap 提供的代码,并在 onDeviceReady 之后调用它。这是我使用的代码:
function checkConnection() {
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}
有没有人遇到过这个问题或有任何解决办法?目前我正在使用 WiFi 连接,即使在 3G 连接上它也返回相同的结果。
请您参考如下方法:
请检查以下步骤:
首先检查权限。确保你已经添加了
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在你的 AndroidManifest.xml 中
其次检查正确的插件配置。如果您使用旧的 Phonegap 教程(1.6 之前的版本)和新的 Phonegap/Cordova 框架,您应该将 res/xml/plugins.xml 更改为:
<plugin name="Network Status" value="org.apache.cordova.NetworkManager"/>
成为:
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
最新版本的 Phonegap/Cordoca 有一个错误:
navigator.connection.type
将其更改为:
navigator.network.connection.type.
您也可以使用旧的 2.1 版本或等待 2.3 版本
长话短说,您是否在执行函数 checkConnecting() 之前使用了 deviceready 事件?
最坏的情况是更改您的代码并像这样尝试:
<!DOCTYPE HTML> <html> <head> <script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script> <script type="text/javascript" charset="utf-8"> var deviceInfo = function(){ alert(navigator.network.connection.type); } function init(){ document.addEventListener("deviceready", deviceInfo, true); } </script> </head> <body onload="init();"> </body> </html>