2013-11-12 2 views
2

Я занят обучением PhoneGap и созданием приложения для Android.PhoneGap: ReferenceError: Соединение не определено

Получил основное мое приложение с готовым устройством для работы.

Теперь я пытаюсь проверить сетевое соединение без успеха.

Я установил плагин-сети-информация:

$ 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); 
} 

кто-нибудь была такая же проблема, и мы надеемся, решение?

+1

Отправьте свой вызов функции для проверки соединения. Вы проверяете соединение после того, как устройство готово или раньше? –

+1

Вы включили cordova.js, с правильной платформой и версией. Поскольку у меня была та же проблема, причина - пропустить совпадение кордовы или не включать. –

+0

Убедитесь, что загружена телефонная книга (событие «deviceready»). –

ответ

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); 

Я знаю, что это странно, но это дает время (500 ms в этом примере), чтобы обновить его значение navigator.connection.type. Он действует как асинхронный вызов.

Вы можете поэкспериментировать с заменой 500 мс с большим или меньшим значением.

+0

NetworkState - 0, но ссылки типа Connection.UNKNOWN, Connection.ETHERNET .... не определены – javapenguin

+0

@ user2818846 даже после помещая его в тайм-аут? Если я не стану, Connection.whatever не определен, но после 500 мс первого «navigator.connection.type» он определяется. – benka

+1

пробовал тайм-аут 1000 и все тот же вопрос – javapenguin

Смежные вопросы