2

PhoneGap の学習と Android 用のアプリケーションの作成に忙しくしています。

デバイスの準備ができて正常に動作する基本的な my-app を取得しました。

現在、ネットワーク接続をテストしようとしていますが、成功していません。

plugin-network-information をインストールしました。

$ cordova plugin add org.apache.cordova.network-information<br>
$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git<br>

config.xml に追加された機能:

<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>

大丈夫。

私がするとき

$ phonegap local build android

アプリをうまくビルドします。ビルドされた AndroidManifest.xml ファイルを開くと、次のエントリがあります。

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

アプリを実行すると、「ReferenceError: 接続が定義されていません」というメッセージが表示されます

これが私のコードです、私はこれをPhoneGapから入手しました:

try {
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.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';

alert('Connection type: ' + states[networkState]);
} catch (e) {
alert(e);
}

誰かが同じ問題を抱えていて、うまくいけば解決策がありますか?

4

1 に答える 1

1

navigator.connection.type呼び出しを遅らせるタイムアウト機能を追加してみてください。同じ問題がありました。これは私がそれを解決した方法です:

最初に次のことを行います。

var networkState = navigator.connection.type;

次に、タイムアウトを設定して、navigator.connection.typeもう一度実行します。

setTimeout(function(){

    networkState = navigator.connection.type; // have to do this second time to pick up the refreshed value

    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.CELL] = 'Cell generic connection';
    states[Connection.NONE] = 'No network connection';

    alert('Connection type: ' + states[networkState]);

}, 500);

私はそれが奇妙であることを知っていますが、これにより navigator.connection.type に時間 (この例では 500 ミリ秒) が与えられ、その値が更新されます。非同期呼び出しのように動作します。

500 ミリ秒をより大きな値またはより小さな値に置き換えて試すことができます。

于 2013-11-12T10:49:00.710 に答える