由于某种原因,Phonegap连接API返回null
function checkConnection() {
var networkState = navigator.network.connection.type;
alert(networkState);
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';
document.getElementById('connections').innerHTML = states[networkState];
}
我从设备运行时调用的onDeviceReady
函数运行此函数。
当一切都关闭后,我得到null
。我不应该取回Connection.NONE
而不是null
吗?这真烦人,因为我无法检查手机是否有连接。打开Wifi时它可以正常工作。
答案 0 :(得分:2)
确保您已添加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
AndroidManifest.xml中的
答案 1 :(得分:1)
我目前正在使用PhoneGap 1.4.1和Sencha Touch 1.1.1。在Android 2.3.5上(使用HTC Desire S测试)。 似乎“navigator.network.connection.type”语句确实有效地返回Phonegap 1.4.1的'null',即使在'deviceready'事件被触发后调用(在检查源代码后确认)。然而,它完全适用于Cordova(ex-PhoneGap)1.5.0。所以我建议尽快升级: - )
埃里克。
答案 2 :(得分:1)
如果您使用的是1.6.0,则需要从
更新res / xml / plugins.xml<plugin name="Network Status" value="org.apache.cordova.NetworkManager"/>
是:
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
(您需要删除“网络状态”中的空格)
答案 3 :(得分:1)
对于1.6之前的cordova版本,您需要使用:
<plugin name="Network Status" value="org.apache.cordova.NetworkManager"/>
而不是:
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
请使用空格将插件名称更改为“网络状态”!
答案 4 :(得分:1)
从2.3.0之前到2.3.0之后还有另一个变化。
在Cordova 2.3.0之前,Connection对象存在于: navigator.network.connection。
为了匹配规范,在2.3.0中将其更改为navigator.connection。
navigator.network.connection仍然存在,但现已弃用 将在以后的版本中删除。
所以改变这个
var networkState = navigator.network.connection.type;
到此
var networkState = navigator.connection.type;
基本上从您的Javascript中删除网络。希望这会有所帮助。
答案 5 :(得分:0)
使用此代码:
var networkState = navigator.connection.type;
而不是:
var networkState = navigator.network.connection.type;