2012-12-30 34 views
2

我想检查我的phonegap应用程序中的网络状态(使用phonegap 2.2.0),但即时通讯显示与告警说连接类型:未定义。当我做一个console.log它返回0.Phonegap网络状态

我使用的代码,因为它是由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连接上,它也会返回相同的结果。

+0

什么平台是你测试此? –

+0

你到底在做什么?如果'networkState'为0,则NetworkStatus插件可能不存在。 – keune

+0

@NickRoth我正在测试Android(Target SDK 16) – user1809790

回答

7

请检查该步骤:

  • 首先检查权限。请确保您已在AndroidManifest.xml中

  • 第二次检查正确的插件配置添加

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    

    。如果你使用的是旧的PhoneGap教程(预1.6版)的新的PhoneGap /科尔多瓦框架,你应该改变RES/XML/plugins.xml来自:

    <plugin name="Network Status" value="org.apache.cordova.NetworkManager"/> 
    

    是:

    <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/> 
    
  • 末PhoneGap的/ Cordoca的版本有一个bug:

    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> 
    
+2

将navigator.connection.type更改为navigator.network.connection.type取得了诀窍!谢谢! – user1809790

+0

是的,它是2.2中的一个bug,在2.3中是固定的。 –

+0

我刚从plugin.cordova.io网站更新了最新更新的答案 – hriziya