2

phonegap アプリケーション (phonegap 2.2.0 を使用) でネットワーク状態を確認しようとしていますが、接続タイプ: 未定義という警告が表示されています。そして、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 接続でも同じ結果が返されます。

4

1 に答える 1

7

この手順を確認してください:

  • 最初に権限を確認します。追加したことを確認してください

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

    AndroidManifest.xml で

  • 2 番目に正しいプラグイン構成を確認します。古い Phonegap チュートリアル (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 を待つこともできます。

  • ロングシュート、関数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>
    
于 2012-12-30T23:26:06.190 に答える