Устройство не обнаруживает статус онлайн / оффлайн

#javascript #android #jquery #jquery-mobile #cordova

#javascript #Android #jquery #jquery-мобильный #кордова

Вопрос:

В моем приложении phonegap я хочу проверить статус устройства онлайн / оффлайн.

 Cordova version is 3.3
Android version 4.2.2
Jquery Mobile 1.3
  

Поэтому я использую следующие методы для обнаружения онлайн / оффлайн.
Способ 1:

 document.addEventListener("deviceready",onDeviceReady,false);

function onDeviceReady(){   
    connectionStatusOnline = navigator.onLine ? 'online' : 'offline';
    alert(connectionStatusOnline);
}
  

он всегда возвращается в автономном режиме.

Способ 2:

 document.addEventListener("online", toggleon, false);
    document.addEventListener("offline", toggleoff, false);
function toggleon() {
    alert("online");

}
function toggleoff() {
    alert("offline");

}
  

в методе 2 он никогда не вызывает toogleon или toogleoff.

Способ 3:

 function onDeviceReady() {
//document.addEventListener("offline", toggleCon, false);
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]);
}
  

в методе 3 отображается неопределенное соединение

У меня есть все плагины config.xml and set all the permission in manifest .

Комментарии:

1. Можете ли вы рассказать мне о своей структуре проекта (имеется в виду структура папок www).

2. @Arut файлы html находятся в папке www / html, а файлы js — это файлы www / js, а файлы css — www / css

3. хорошо, где cordova.js и cordova_pluins.js файлы..

4. @Arut внутри моих файлов www / js.

Ответ №1:

Кажется, ваш cordova.js и cordova_plugin.js файлы находятся внутри папки www/ js .. So the file API's are called in this staratergy ТАКИМ образом, устройство не обнаруживает, что устройство находится в автономном режиме / онлайн. Я сталкивался с подобной проблемой раньше. То, что я скопировал cordova.js и cordova_pluins.js файлы в папку www .

Ваш project directory should be like www/cordova.js and www/cordova_plugins.js

Не www/js/cordova.js and www/js/cordova_plugin.js

Ответ №2:

Добавьте сетевой плагин через CLI… Ссылка

 cordova plugin add org.apache.cordova.network-information
  

Затем

 <script>

   document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady()
    {

        if(navigator.connection.type==0)
        {
              toggleoff();  
        }
        else if(navigator.connection.type=='none')
        {
              toggleoff();  
        }
        else
        {
              toggleon();
        }

     }
</script>