navigator.network.connection.type возвращает ноль вместо Connection.NONE - PullRequest
0 голосов
/ 23 января 2012

По какой-то причине API соединения Phonegap возвращает null

function checkConnection() {
    var networkState = navigator.network.connection.type;
    alert(networkState);
    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';

    document.getElementById('connections').innerHTML = states[networkState];
}

Я запускаю эту функцию из функции onDeviceReady, которая вызывается во время работы устройства.

Когда все выключено, я получаю null. Разве я не должен вернуть Connection.NONE вместо null? Это действительно раздражает, так как я не могу проверить, есть ли у телефона соединение или нет. Он работает нормально, когда включен Wi-Fi.

Ответы [ 6 ]

2 голосов
/ 18 марта 2012

Убедитесь, что вы добавили

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

в AndroidManifest.xml

1 голос
/ 13 января 2014

При переходе с версии 2.3.0 до версии 2.3.0 есть еще одно изменение.

До Cordova 2.3.0 объект Connection существовал в: navigator.network.connection.

Для соответствия спецификации это было изменено на navigator.connection в 2.3.0.

navigator.network.connection все еще существует, но теперь устарела и будет удален в следующем выпуске.

2,7,0 документов

Так что измени это

 var networkState = navigator.network.connection.type;

К этому

 var networkState = navigator.connection.type;

В основном удалите сеть из вашего Javascript. Надеюсь, это поможет.

1 голос
/ 21 декабря 2012

Для версии Cordova до 1.6 вам необходимо использовать:

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

Вместо:

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

Пожалуйста, измените имя плагина на "Состояние сети" с пробелом!1007 *

1 голос
/ 16 апреля 2012

Просмотрите группу обсуждения PhoneGap: https://groups.google.com/forum/?fromgroups#!searchin/phonegap/navigator.network.connection.type/phonegap/oAggxryQzrw/hE8uhwN3ONgJ

Если вы используете 1.6.0, вам нужно обновить res / xml / plugins.xml из

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

быть:

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

(необходимо убрать пробел в «Состояние сети»)

1 голос
/ 11 марта 2012

В настоящее время я использую PhoneGap 1.4.1 и Sencha Touch 1.1.1.на Android 2.3.5 (протестировано с HTC Desire S).Кажется, что оператор "navigator.network.connection.type" действительно возвращает null с Phonegap 1.4.1, даже если он вызывается после того, как событие 'deviceready' было запущено (подтверждено после проверки исходного кода).Однако он отлично работает с Cordova (ex-PhoneGap) 1.5.0.Поэтому я предлагаю обновить как можно скорее: -)

Эрик.

0 голосов
/ 02 ноября 2017

Используйте этот код:

var networkState = navigator.connection.type;

Вместо:

var networkState = navigator.network.connection.type;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...