navigator.network.connection.type返回null而不是Connection.NONE

时间:2012-01-23 10:27:46

标签: javascript android html5 cordova connection

由于某种原因,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时它可以正常工作。

6 个答案:

答案 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)

查看PhoneGap讨论组:https://groups.google.com/forum/?fromgroups#!searchin/phonegap/navigator.network.connection.type/phonegap/oAggxryQzrw/hE8uhwN3ONgJ

如果您使用的是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仍然存在,但现已弃用   将在以后的版本中删除。

2.7.0 docs

所以改变这个

 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;