2012-12-30 194 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