Phonegap网络状态

时间:2012-12-30 19:46:38

标签: cordova

我正在尝试检查我的phonegap应用程序中的网络状态(使用phonegap 2.2.0)但是我正在显示一条警告说Conection类型:undefined。当我执行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连接上也会返回相同的内容。

1 个答案:

答案 0 :(得分:7)

请检查以下步骤:

  • 首先检查权限。确保您已添加

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

    在AndroidManifest.xml中

  • 第二步检查正确的插件配置。如果您使用旧的Phonegap教程(Pre 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

  • 长时间拍摄,您是否在执行功能之前使用过deviceready事件 checkConnecting()

  • 最糟糕的情况会改变您的代码并尝试这样:

    <!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>